int (*p)[2];
p=(int(*))malloc(sizeof(int[2])*100);
如何正确使用 malloc 分配一个数组指针? 我无法理解其中的 (int(*)) 部分。
C
中,您不应该强制转换malloc
的返回值。有关为什么在C
中对malloc
的返回值进行类型转换不是一个好主意的更多信息,请参见此文章。如果出于某种原因您真的想要强制转换,则应该是(int (*)[2])
。(int (*))
是int *
。向malloc
传递的大小看起来很好(分配100个指向2个整数数组的指针的大小)。所以你应该这样做:int (*p)[2];
p=malloc(sizeof(int[2])*100);
不清楚你想要什么。如果你需要100个int对,例如,排列成指向int指针的数组(每个指针指向恰好两个ints),那么你需要在100个指向int的指针上调用malloc 100次,每次分配两个整数。
"malloc a pointer to an array"没有意义。但是你可以使用malloc分配一个数组,并将该地址分配给指针,或者可以malloc指针的数组。但是你提出的问题并不清楚。
(int(*))
。建议不要强制转换malloc
的返回值。 - another.anon.coward(int(*)[2])
。(int(*))
表示的是int *
。传递给malloc
的大小看起来很好(为100个指向包含2个整数数组的指针分配空间)。 - another.anon.coward