转换无效*

时间:2013-02-23 18:38:19

标签: c casting void-pointers

我真的很喜欢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)

但这也不起作用。

有人可以帮我理解如何做到这一点吗?谢谢!

2 个答案:

答案 0 :(得分:6)

数组不是一流的类型。您无法分配给数组。您必须将内存/元素复制到数组中:

memcpy(hostname, qpop(&queue), BUF)

答案 1 :(得分:1)

施法没有意义。因为你不能直接指定一个指向数组的指针。仅供参考,语法为:hostname = (char(*)[1025]) qpop(&queue)。你可以把它读作“指向1025个字符数组的指针”

最佳解决方案由@Cornstalks提供