C语言:malloc()返回的指针和转换

时间:2013-01-19 13:28:59

标签: c pointers memory malloc

  

可能重复:
  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));

有人可以解释:)?

1 个答案:

答案 0 :(得分:1)

在C中,不需要此演员表。转换确实是隐含的。

  

C11(n1570),§6.3.2.3指针

     

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

由于它是不必要的,因此转换malloc或不是另一个问题(请参阅here)。