我真的很喜欢C,并且在演员表面遇到麻烦。以下是我认为相关的代码行:
#define BUF 1025
char hostname[BUF];
hostname = *(char *) qpop(&queue);
这是我从编译器得到的错误:
错误:分配到'char [1025]'类型时出现不兼容的类型 键入char
请注意,函数qpop返回void *。我认为我的问题是如何从void *转换为char [1025]。从错误消息中,我似乎要转换为char类型,但不要键入char [1025]。我试过这个:
hostname = *(char[1025] *) qpop(&queue)
但这也不起作用。
有人可以帮我理解如何做到这一点吗?谢谢!
答案 0 :(得分:6)
数组不是一流的类型。您无法分配给数组。您必须将内存/元素复制到数组中:
memcpy(hostname, qpop(&queue), BUF)
答案 1 :(得分:1)
施法没有意义。因为你不能直接指定一个指向数组的指针。仅供参考,语法为:hostname = (char(*)[1025]) qpop(&queue)
。你可以把它读作“指向1025个字符数组的指针”
最佳解决方案由@Cornstalks提供