2011-05-01 75 views
1

如何將二維數組傳遞給函數?
當我通過它時,它會在Visual Studio調試器中顯示爲單維數組。 問題是,當我索引sel_col [i]時,它會得到下一個字符,而不是下一個單詞。將非動態2維數組傳遞給C中的函數?

這是我的函數原型:

void print_row(char sel_col[MAX_IDENT_LEN][MAX_IDENT_LEN]); 

這是我的2D陣列的定義,和其中I調用它:

char sel_col[MAX_NUM_COL][MAX_IDENT_LEN]; 
print_row(sel_col); 

解決方案1:取下第一大小標識符。沒有工作。

void print_row(char sel_col[][MAX_IDENT_LEN]); 

解決方案2:通過引用到函數通過。沒有工作。

print_row(&sel_col); 

解決方案3:使用雙指針。我不想走這條路,因爲我會重寫大部分代碼。

+0

已編輯。對於那個很抱歉。 – chustar 2011-05-01 04:26:52

+0

未標記的C++,因爲這個問題在C. – Puppy 2011-05-01 06:17:11

回答

1

在C中,二維數組看起來像一維數組;一個char[3][3]實際上是一個只有9個元素的單維數組,編譯器執行一些數學運算將兩個較小的索引變成一個更大的數組。你的函數原型看起來正確。有什麼問題?你是否收到編譯器錯誤?

+0

問題是,當我索引sel_col [i]時,它獲取下一個字符,而不是下一個單詞。 – chustar 2011-05-01 04:28:42

+0

您可以嘗試'char * array [SIZE]'或向我們展示您傳遞的數組的定義。 – 2011-05-01 04:29:51

+0

@chustar這個小程序適用於我:http://codepad.org/gdcd1WKR它在單獨的行上打印'abc def ghi ...',就像你想象的那樣。 – 2011-05-01 04:32:55