2

在我们经常使用的任何指针变量的程序中:

float *x;
x=(float*)malloc(a*sizeof(long int));

我想知道为什么我们(float*)在前面使用malloc

4

2 回答 2

1

Malloc 返回一个指向 void 的指针。

(float*)从指向 void 的指针转换为指向 float 的指针

在 C 中这不是必需的,在 C++ 中是这样,因此有些人建议使您的代码与 C++ 编译器兼容。

但你不需要这样做。(有些C迷反对)

于 2013-02-22T20:05:19.740 回答
-2

malloc会给你一个指针void,你不能用它来做任何与你想用float. 为了能够使用在返回的内存位置分配的变量,您需要将其强制转换为 afloat*以便您可以取消引用该指针并将其用作float.

但是,正如您写的问题一样,您应该将返回值转换为mallocto float*,然后在将其分配给之前立即取消引用它x,因为您没有声明x为指向float.

编辑:正如评论者所指出的,显式转换只需要在 C++ 中,而不是在 C 中。

于 2013-02-22T20:05:15.887 回答