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