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返回与否是另一个问题(请参阅此处)。

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

上一篇: C language: pointer returned by malloc() and casting

下一篇: malloc assigned to pointer