-2
我正在爲我的學校製作一個外殼,而我其實正在研究管道|
。爲了解析,我需要把一些東西放在char ***
。我如何malloc
a char ***
?Malloc a char ***
我正在爲我的學校製作一個外殼,而我其實正在研究管道|
。爲了解析,我需要把一些東西放在char ***
。我如何malloc
a char ***
?Malloc a char ***
malloc
不關心你要使用它的返回值的類型。所以你可以malloc
a char***
就像你malloc
別的。
大部分時間,您將嘗試動態分配一段時間的數組T
,您需要將其存儲在類型爲T*
的變量中。所以如果你需要一個char**
(例如,一組argv
向量)的數組,你可以將它們存儲在類型爲char***
的變量中。 (T
是char**
所以T*
是(char**)*
這是char***
)
做的malloc的一般形式是:
T* result = malloc(number_of_elements * sizeof(*result));
如果你寫的malloc
呼叫這樣,那麼你就可以改變結果的類型而不改變malloc調用。
請記住,由malloc
返回的內存區域未以任何方式初始化。如果您分配一個數組的數組,你可能要確保分配的內存初始化爲零使用
T* result = calloc(number_of_elements, sizeof(*result));
在任何情況下,您將需要實際分別分配子陣列。
一般來說很難回答問題如何分配指針,因爲它們可以用來指向不同類型的對象(您是直接指向另一個指針嗎?還是分配一個雙指針數組?完全是另一回事?)。如果你想獲得有意義的答案,你應該澄清你的問題。另外,請記住[被稱爲三星程序員通常不是恭維](http://wiki.c2.com/?ThreeStarProgrammer)。如果你覺得需要使用三重間接,你應該停下來重新思考你的解決方案。 –