如果我創建一個Char matrix as param
char a [100] [100];
併發送到函數void func(char ** a); 它說char()[100]不能轉換爲char *。
我想像一個char [100] [100]就像一個指向指針的指針。 我錯了嗎?
謝謝
如果我創建一個Char matrix as param
char a [100] [100];
併發送到函數void func(char ** a); 它說char()[100]不能轉換爲char *。
我想像一個char [100] [100]就像一個指向指針的指針。 我錯了嗎?
謝謝
是的,你錯了。一個char[100][100]
是一個數組(100 char
),當它傳遞給一個函數時,它被轉換爲一個指針(數組100 char
),一個char (*)[100]
。當作爲函數參數傳遞時,將數組轉換爲指針只會影響數組的最外層。
你既可以聲明該函數作爲採取這一類型的參數,
void func(char (*)[100]);
,如果你將永遠傳遞數組有100列,否則你將不得不通過不同的參數,如果你想保持函數的類型。
你可以保持它的簡單,並宣佈它是這樣的:
void func(char a[100][100]);
如果您的系統支持變長數組,你可以這樣做:
void func(int nRows, int nCols, char a[nRows][nCols]);
第二個方法可以讓你將任意大小的二維數組傳遞給該函數。
它衰減爲一個指向100個字符數組的指針。 – chris
我應該如何聲明函數? – Lefsler