2017-05-21 77 views
-2

我正在爲我的學校製作一個外殼,而我其實正在研究管道|。爲了解析,我需要把一些東西放在char ***。我如何malloc a char ***Malloc a char ***

+1

一般來說很難回答問題如何分配指針,因爲它們可以用來指向不同類型的對象(您是直接指向另一個指針嗎?還是分配一個雙指針數組?完全是另一回事?)。如果你想獲得有意義的答案,你應該澄清你的問題。另外,請記住[被稱爲三星程序員通常不是恭維](http://wiki.c2.com/?ThreeStarProgrammer)。如果你覺得需要使用三重間接,你應該停下來重新思考你的解決方案。 –

回答

0

malloc不關心你要使用它的返回值的類型。所以你可以malloc a char***就像你malloc別的。

大部分時間,您將嘗試動態分配一段時間的數組T,您需要將其存儲在類型爲T*的變量中。所以如果你需要一個char**(例如,一組argv向量)的數組,你可以將它們存儲在類型爲char***的變量中。 (Tchar**所以T*(char**)*這是char***

做的malloc的一般形式是:

T* result = malloc(number_of_elements * sizeof(*result)); 

如果你寫的malloc呼叫這樣,那麼你就可以改變結果的類型而不改變malloc調用。

請記住,由malloc返回的內存區域未以任何方式初始化。如果您分配一個數組的數組,你可能要確保分配的內存初始化爲零使用

T* result = calloc(number_of_elements, sizeof(*result)); 

在任何情況下,您將需要實際分別分配子陣列。

相關問題