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指针

指向CCD_ 1的指针可以被转换为指向任何对象类型的指针。指向的指针任何对象类型都可以转换为指向void的指针,然后再返回;结果应比较等于原始指针。

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

相关内容

  • 没有找到相关文章

最新更新