可能重复:
我是否投射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
返回是另一个问题(请参阅此处(。