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

时间:2011-08-15 16:48:25

标签: c pointers void-pointers

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

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

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

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

  

错误:无效转换为'void *'到'char *'

2 个答案:

答案 0 :(得分:24)

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

答案 1 :(得分:3)

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

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

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

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

你在尝试使用哪个操作系统?