2012-02-17 119 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