0

可能重复:
我要转换 malloc 的结果吗?
malloc 的最佳实践是什么?

我是 c 语言的新手,我有一个问题,正如我在课堂上解释的那样:

malloc() 返回的指针类型为 void *,因此我们需要将其转换为所需的类型

这意味着我需要做:

char *str;
str = (char *) malloc(14);

但我不明白,这是必须的吗?假设 malloc 返回那个 void 指针,为什么我在没有进行强制转换的情况下看到很多示例?一个例子:

float *arr = malloc (20 * sizeof (float));

谁能解释一下:)?

4

1 回答 1

1

在 C 中,不需要这种转换。转换确实是隐式的。

C11 (n1570),第 6.3.2.3 节指针

指向的指针void可以转换为指向任何对象类型的指针或从指向任何对象类型的指针转​​换。指向任何对象类型的指针都可以转换为指向 void 的指针并再次返回;结果应与原始指针比较。

由于这是不必要的,因此是否强制malloc返回是另一个问题(请参见此处)。

于 2013-01-19T13:30:25.167 回答