陈述是,int *A=(int *)malloc(10 * sizeof(int));
任何人都可以告诉我这件事发生了什么吗?
答案 0 :(得分:1)
您分配内存以在堆上存储10个整数,并将指针保存到名为A
的变量中的第一个整数。变量A
也在语句中声明。
(int*)
是一种类型转换,它将malloc
(实际上为void*
类型)返回的指针转换为所需的类型int*
。在较新版本的C中没有必要。
答案 1 :(得分:1)
如果您有#include <stdlib.h>
,则执行documentation所述的内容。
如果你还没有,它会尝试解释类型&#34;指向void&#34;的指针。如int
(未定义的行为),然后将类型int
的值转换为类型int*
(再次,未定义的行为),并将结果值分配给A
。< / p>
所以,确保您使用正确的原型用于库函数,并且不要使用不必要的强制转换。
答案 2 :(得分:0)
您正在分配内存以存储10个整数。
函数malloc返回一个指向void
的指针,因此您将其转换为指向int (int *)
的指针,并将其指定给变量A.