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

标签 c types casting malloc

<分区>

Possible Duplicate:
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 的指针,所以即使没有强制转换,指针算法也应该可以正常工作。

谢谢

最佳答案

只有在 C++ 代码中使用 malloc 时才需要强制转换。

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

关于c - 在 C 中使用 malloc 时是否需要类型转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6359310/

相关文章:

python - type 和 object 原始对象的区别

c# - 动态设置泛型类型参数

java - 类型转换后 "Cannot find symbol"

c++ - 为什么运算符的操作数需要是同一类型?

C# 通过对象拆箱

c - 使用 read() 并将缓冲区放入字符串中

c - Linux 上的电话应用程序编程

c - 为指向结构体数组的指针分配内存

c - 结构是否保证与 C 中的 sizeof(size_t) 对齐?

python - 如何从字符串 'long' 创建一个 numpy dtype?