69,372
社区成员
发帖
与我相关
我的任务
分享
在C语言中,void指针可以直接赋给其他类型的指针,如int *, char *等。但在C++中,void指针必须要明确地进行类型转换。(比如malloc函数返回值为void *类型)void *vptr; int *iptr = vptr; // C++中必须用int *iptr = (int *)vptr;
看样子卤煮是在VS直接创建项目 生成了CPP项目了 把CPP的后缀名换成C看看
C:\demo\test>type test.cpp
#include <stdio.h>
int main()
{
int *p=NULL;
void * p1=NULL;
p = p1;
return 0;
}
//C
C:\demo\test>cl /nologo /TC test.cpp
test.cpp
//C++
C:\demo\test>cl /nologo /TP test.cpp
test.cpp
test.cpp(6) : error C2440: '=' : cannot convert from 'void *' to 'int *'
Conversion from 'void*' to pointer to non-'void' requires an explicit cast
C:\demo\test>
void *vptr;
int *iptr = vptr; // C++中必须用int *iptr = (int *)vptr;
都说了是VC了嘛 [quote=引用 8 楼 Oringe_new 的回复:] 看样子卤煮是在VS直接创建项目 生成了CPP项目了 把CPP的后缀名换成C看看
都说了是VC了嘛 看样子卤煮是在VS直接创建项目 生成了CPP项目了 把CPP的后缀名换成C看看