如何在C中将void指针转换为char指针

好吧,这对我来说太麻烦了。 我只是不知道这个任务有什么问题:

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

任何人都可以告诉我为什么我收到此错误:

错误:从’void *’到’char *’的无效转换

实际上,你的编译器肯定有问题(或者你没有讲完整的故事)。 将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 

我刚刚在名为temp.c的模块中尝试了您的代码。 我添加了一个名为f1的函数。

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

在Linux上我输入了gcc -c temp.c,编译没有错误或警告。

您在尝试使用哪种操作系统?