我真的很生C,并且在演员时遇到了麻烦。下面是我的代码,我觉得行相关:转换void *
#define BUF 1025
char hostname[BUF];
hostname = *(char *) qpop(&queue);
这是我从编译器得到的错误:
error: incompatible types when assigning to type 'char[1025]' from type char
注意qpop返回一个void *的功能。我认为我的问题是如何从void *转换为char [1025]。从错误消息,我似乎是铸造到键入char,但不是键入char [1025]。我试过这个:
hostname = *(char[1025] *) qpop(&queue)
但这也没有工作。
有人可以帮我理解如何做到这一点?谢谢!
铸适当的方式是没有第一星号:char_ptr =(字符*)void_ptr; – 2013-02-23 18:43:14
@NannuoLei:其实,*正确*的方式根本就不施放。 'void *'不需要强制转换将其分配给另一个指针类型。另外,额外的'*'根本没有做任何演员,它正在做一个解除引用。 – Cornstalks 2013-02-23 18:50:14
@Cornstalks感谢启蒙。我知道你对虚空是对的,我只是忘记了这一点,并直接解释了如何投射任何东西(void *除外)。是的,第一个*用于解除引用。 – 2013-02-23 18:53:57