C语言:由malloc()返回的指针和转换
可能重复:
我输入malloc的结果吗?
malloc的最佳实践是什么?
即时通讯新的与C语言,我有一个问题,因为我在课堂上解释:
malloc()返回的指针的类型是void *,因此我们需要将它转换为所需的类型
这意味着我需要这样做:
char *str;
str = (char *) malloc(14);
但我不明白,这是必须的吗? 让我们说malloc返回的是void指针,为什么我看到很多没有做铸造的例子呢? 一个例子:
float *arr = malloc (20 * sizeof (float));
任何人都可以请解释:)?
在C中,这个强制转换不是必需的。 转换确实是隐含的。
C11(n1570),§6.3.2.3指针
指向void
的指针可以被转换为指向任何对象类型的指针, 指向任何对象类型的指针可能会被转换为void指针并返回; 结果应与原始指针相等。
由于它是不必要的,因此malloc
返回与否是另一个问题(请参阅此处)。