首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

开辟空间为什么前面要强制转换一下?解决方法

2012-05-01 
开辟空间为什么前面要强制转换一下?char *pp(char *)malloc(5*sizeof(char))为什么不能将第二句写成:p

开辟空间为什么前面要强制转换一下?
char *p;
p=(char *)malloc(5*sizeof(char));
为什么不能将第二句写成:p=malloc(5*sizeof(char));

[解决办法]
char *p;
p=malloc(5*sizeof(char));//这样是通不过编译的,至少vc是通不过的...


error C2440: “=”: 无法从“void *”转换为“char *”
1> 从“void*”到指向非“void”的指针的转换要求显式类型转换
[解决办法]
原型:extern void *malloc(unsigned int num_bytes); 

[解决办法]
C里面这样写没问题,C++不行,malloc返回是void*的指针
[解决办法]
因为c++中void*无法直接转换到其它 type*.
c中可以。
于是,c++发明了new,来代替malloc之类的。这样,也不用转换了。。

热点排行
Bad Request.