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

标签 c pointers void-pointers

好吧,这让我很困惑。我只是不知道这个作业有什么问题:

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

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

谁能告诉我为什么会出现这个错误:

error: invalid conversion from ‘void*’ to ‘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

关于c - 你如何在 C 中将 void 指针转换为 char 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7067927/

相关文章:

C 为什么将数组的首地址传递给 char 指针会提供整个字符串?

c - 为什么要将空结构创建为新的 typedef 并将其用作指针类型?

转换 void 指针并使用格式说明符打印

c - 函数指针执行错误

c++ - 部分和 OpenMP 代码有时会挂起

c - 将 fgets() 与链接列表一起使用?

c - NULL 指针与零段错误的比较

c++ - 如何使用方法指针作为另一个方法的参数?

c - 程序收到信号 : “EXC_BAD_ACCESS” ?

c - 为什么在打印 "This is the child process!"后执行停止?