malloc()函數據說返回一個空指針或指向已分配空間的指針。假設一個字符串,我們做出聲明:返回malloc()函數
char* ptr = malloc(size)
是不是ptr
的指針將指向指針?
是不是:
char** ptr = malloc(size)
應該是申報字符指針的正確方法是什麼?
但是,編譯器在我們做的時候並沒有給出警告,它給出的警告是格式說明符(如果使用的話)。
我們應該如何申報,爲什麼?另外,如何使用char **?
malloc()函數據說返回一個空指針或指向已分配空間的指針。假設一個字符串,我們做出聲明:返回malloc()函數
char* ptr = malloc(size)
是不是ptr
的指針將指向指針?
是不是:
char** ptr = malloc(size)
應該是申報字符指針的正確方法是什麼?
但是,編譯器在我們做的時候並沒有給出警告,它給出的警告是格式說明符(如果使用的話)。
我們應該如何申報,爲什麼?另外,如何使用char **?
char *
表示一個字符指針。 Malloc將返回一個void *
指針(該指針將自動轉換爲您要分配的任何指針)。
char **
表示char *
指針。這是一個指向指針的指針。
如果你認爲一個指針作爲一個地圖,你有char *
是一個映射到一個char的,void *
是一個地圖,神祕的東西和char **
是一個地圖到另一個地圖,導致一個char。所以
char* ptr = malloc(size);
是正確的,因爲你想要一個地圖的東西,而不是映射到地圖。
你應該說「自動轉換」,而不是「轉換」,以避免與* cast *的含義混淆爲明確的轉換。 – trentcl
@NomeQueEuLembro,如何將cast與malloc()或calloc()一起使用,請你舉個例子嗎? – BumbleBee
謝謝,@ trentcl!固定。 – NomeQueEuLembro
不,'ptr'將包含'malloc'返回的指針。你是指定返回的指針,沒有取其地址。
*ptr
是指向一個char,其通常用於管理陣列 或字符串。
**ptr
是一個指針的指針爲char,其經常被用於
管理的矩陣(陣列的陣列)或一個字符串數組。
@ Jean-FrançoisFabre這不是一個有效的上帝,我猜。 –
我應該閱讀文本而不僅僅是代碼。 –