关于C#:在malloc之前使用的必要性(float *)


Necessity of use (float*) before malloc

本问题已经有最佳答案,请猛点这里访问。

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

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

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


malloc返回指向void的指针。

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

在C中,这是不必要的,在C++中是这样的,所以一些人建议让代码与C++编译器兼容。

但你不需要这么做。(一些球迷反对)


malloc会给你一个指向void的指针,你不能用它来处理与float有关的任何事情。为了能够使用在返回的内存位置分配的变量,您需要将其强制转换为一个float*,这样您就可以取消对该指针的引用,并将其用作float

但是,在你写问题的时候,你应该把EDOCX1的返回值(0)赋给float*,然后在分配给x之前立即取消引用,因为你没有声明x作为float的指针。

编辑:正如评论家指出的,显式强制转换只在C++中,而不是在C.。