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

时间:2011-06-15 14:27:53

标签: c types casting malloc

  

可能重复:
  Do I cast the result of malloc?

我刚刚学会了如何使用malloc函数,我的老师提到在将内存地址传递给指针时需要进行类型转换。例如,这是使用malloc:

获取16个新字节(4个整数)的代码
#include <stdlib.h>

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

   return 0;
}

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

由于

1 个答案:

答案 0 :(得分:5)

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

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