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

Is the type cast necessary when using malloc in C?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Do I cast the result of malloc?

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

1
2
3
4
5
6
7
8
#include <stdlib.h>

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

   return 0;
}

我的问题是:属性右侧的(int*)是否有必要?毕竟p已经是一个指向ints的指针,所以指针算法即使没有该转换也可以正常工作。

谢谢


如果在C++代码中使用MALOC,则只需要强制转换。

对于C来说,最好不要使用强制转换,因为它(a)是不必要的,(b)可以屏蔽编译器报告的问题。