2012-02-17 95 views
5
int (*p)[2]; 
p=(int(*))malloc(sizeof(int[2])*100); 

malloc指向数组的指针的正确方法是什么? 我不能找出部分(int(*))malloc指向数组的指针

+2

在C'(int(*))'应该避免。建议您不要使用'malloc'的返回值。 – 2012-02-17 08:06:10

+0

哦哇没有更多的编译错误,谢谢 – titus 2012-02-17 08:07:42

+1

如果你真的真的想投,它应该是'(int(*)[2])''。 '(int(*))'是'int *'。传递给'malloc'的大小看起来很好(为100个指针分配大小为2个整数的数组) – 2012-02-17 08:14:41

回答

8

发表评论为答案:
C中,您不应该将返回值设置为malloc。请参阅SO上的this post了解更多关于为什么在C中类型化返回值为malloc不是一个好主意的更多信息。如果由于某种原因你确实想要投射,应该是(int(*)[2])(int(*))int *。传递给malloc的大小看起来很好(为100个指针分配大小为2个整数的数组)。所以你应该这样做

int (*p)[2]; 
p=malloc(sizeof(int[2])*100); 

希望这有助于!

-1

这不清楚你想要什么在这里。例如,如果你想要100个int对,例如,按照指向int的指针数组(每个指针指向两个整数),则需要在100个int指针上调用malloc 100次,每次都分配两个整数。

它只是没有意义“malloc一个指向数组的指针”。你可以malloc一个数组,然后把这个地址赋给一个指针,或者你可以指向一个指针数组。但是你提出的问题并不清楚。

+1

好的,但是如果我不知道在运行时需要100个指针呢?如果我需要10000?我认为我做得很对 – titus 2012-02-17 08:10:45

+2

我认为这很清楚OP在这里需要什么。 – 2012-02-17 09:40:00