在C中使用malloc时是否需要类型转换?

可能重复:
我输入malloc的结果吗?

我刚刚学会了如何使用malloc函数,而我的老师提到在将内存地址传递给指针时需要进行类型转换。 例如,下面是使用malloc分配16个新字节(4个整数)的代码:

#include <stdlib.h>

int main(){
   int *p;
   p = (int *)malloc(4*sizeof(int));

   return 0;
}

我的问题:是必要的属性右侧的(int *)类型吗? 毕竟p已经是一个指向int的指针了,所以指针算术应该可以正常工作,即使没有这种强制转换。

谢谢


如果您在C ++代码中使用malloc,则只需要转换。

对于C来说,最好不要使用cast,因为它是(a)不必要的,(b)可以掩盖编译器会报告的问题。

链接地址: http://www.djcxy.com/p/4865.html

上一篇: Is the type cast necessary when using malloc in C?

下一篇: Difference between malloc and calloc?