-
int *p = (int *)malloc(sizeof(int))
malloc函数会返回开辟空间的首地址,加(int *)的目的是让计算机知道,如何去划分这个开辟的空间
- C语言编译器会隐式转换类型,所以不需要加(int *)。而且推荐不强制转换,便于程序维护。
- int *p = (char *)malloc(sizeof(int)) ; 这种情况,我试了一下,编译器会给出警告。(我不太明白强制转换类型后再赋值给一个不同类型会发生什么,所以这里只能做猜测)我猜想:编译器有两种选择,可以使用char *类型来解释新开辟的内存空间,也可以选择int *类型解释新开辟的空间,只不过编译器选择了使用int *来解释了。(总之这样写是错误的写法。)
浙公网安备 33010602011771号