Я действительно сырой с C, и у меня проблемы с актерским составом. Вот строки из моего кода, я думаю, актуальны:Converting 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 * в char [1025]. Из сообщения об ошибке, похоже, я использую casting для ввода char, но не для ввода char [1025]. Я пробовал:
hostname = *(char[1025] *) qpop(&queue)
но это тоже не сработало.
Может кто-нибудь помочь мне понять, как это сделать? Спасибо!
правильный способ бросить без первой звездочки: char_ptr = (символ *) void_ptr; –
@NannuoLei: На самом деле, * правильный * способ не бросать вообще. 'void *' не требует кастинга, чтобы назначить его другому типу указателя. Кроме того, дополнительный '*' вообще не делает кастинг, он делает разыменование. – Cornstalks
@Cornstalks благодарит за просвещение. Я знаю, что ты прав насчет пустоты, я просто забыл об этом и сразу перешел к объяснению, как делать что-либо (кроме void *). И да, первая * предназначена для разыменования. –