可能重复:
Do I cast the result of malloc?
What is the Best Practice for malloc?
我是c语言的新手,我有一个问题 正如我在课堂上解释的那样:
malloc()返回的指针类型为void *,因此 我们需要将其转换为所需的类型
这意味着我需要这样做:
char *str;
str = (char *) malloc(14);
但我不明白,这是必须的吗?让我们说malloc返回那个void指针,为什么我会看到许多围绕没有进行转换的例子?一个例子:
float *arr = malloc (20 * sizeof (float));
有人可以解释:)?
答案 0 :(得分:1)
在C中,不需要此演员表。转换确实是隐含的。
C11(n1570),§6.3.2.3指针
指向
void
的指针可以转换为指向任何对象类型的指针。指向的指针 任何对象类型都可以转换为指向void的指针,然后再返回;结果应该 比较等于原始指针。
由于它是不必要的,因此转换malloc
或不是另一个问题(请参阅here)。