在我们经常使用的任何指针变量的程序中:
float *x;
x=(float*)malloc(a*sizeof(long int));
我想知道为什么我们(float*)
在前面使用malloc
?
在我们经常使用的任何指针变量的程序中:
float *x;
x=(float*)malloc(a*sizeof(long int));
我想知道为什么我们(float*)
在前面使用malloc
?
Malloc 返回一个指向 void 的指针。
(float*)
从指向 void 的指针转换为指向 float 的指针
在 C 中这不是必需的,在 C++ 中是这样,因此有些人建议使您的代码与 C++ 编译器兼容。
但你不需要这样做。(有些C迷反对)
malloc
会给你一个指针void
,你不能用它来做任何与你想用float
. 为了能够使用在返回的内存位置分配的变量,您需要将其强制转换为 afloat*
以便您可以取消引用该指针并将其用作float
.
但是,正如您写的问题一样,您应该将返回值转换为malloc
to float*
,然后在将其分配给之前立即取消引用它x
,因为您没有声明x
为指向float
.
编辑:正如评论者所指出的,显式转换只需要在 C++ 中,而不是在 C 中。