我真的很生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