1

我对 C 语言非常陌生,并且在演员阵容方面遇到了麻烦。以下是我认为相关的代码行:

#define BUF 1025
char hostname[BUF];

hostname = *(char *) qpop(&queue);

这是我从编译器得到的错误:

错误:从 char 类型分配给类型 'char[1025]' 时类型不兼容

请注意,函数 qpop 返回一个 void*。我认为我的问题是如何将 void* 转换为 char[1025]。从错误消息来看,我似乎正在转换为 char 类型,而不是 char[1025] 类型。我试过这个:

hostname = *(char[1025] *) qpop(&queue)

但这也没有用。

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

4

2 回答 2

6

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

memcpy(hostname, qpop(&queue), BUF)
于 2013-02-23T18:39:54.960 回答
1

铸造没有意义。因为您不能直接将指针分配给数组。仅供参考,语法是 : hostname = (char(*)[1025]) qpop(&queue)。您可以将其读作“指向 1025 个字符数组的指针”

@Cornstalks 给出了最好的解决方案

于 2013-02-23T18:50:00.663 回答