Как конвертировать пустой указатель в указатель на символ в C - PullRequest
15 голосов
/ 15 августа 2011

Хорошо, это стало слишком запутанным для меня.Я просто не знаю, что не так с этим заданием:

void *pa; void *pb;
char *ptemp; char *ptemp2; 

ptemp = (char *)pa;
ptemp2 = (char *)pb;

Может кто-нибудь сказать мне, почему я получаю эту ошибку:

ошибка: недопустимое преобразование из 'void* 'to' char * '

Ответы [ 2 ]

24 голосов
/ 15 августа 2011

На самом деле, должно быть что-то не так с вашим компилятором (или вы не рассказали всю историю). Совершенно законно разыграть void* до char*. Кроме того, преобразование является неявным в C (в отличие от C ++), то есть следующее также должно компилироваться

 char* pChar;
 void* pVoid;
 pChar = (char*)pVoid; //OK in both C and C++
 pChar = pVoid;        //OK in C, convertion is implicit
3 голосов
/ 15 августа 2011

Я только что попробовал ваш код в модуле с именем temp.c.Я добавил функцию с именем f1.

void *pa; void *pb;
char *ptemp; char *ptemp2;

f1()
{
        ptemp = (char *)pa;
        ptemp2 = (char *)pb;
}

. В Linux я ввел gcc -c temp.c, и это скомпилировано без ошибок и предупреждений.

На какой ОС вы пытаетесь это сделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...