c語言中經常需要通過函式傳遞二維陣列,有三種方法可以實現,如下:
方法一,形參給出第二維的長度。
#include
void func(int n, char str[5] )
int main()
;//一維陣列個數是否指定沒關係,夠用就行
func(3, str);
return 0;
}用二維陣列名作為實參或者形參,在被呼叫函式中對形引數組定義時可以指定所有維數的大小,也可以省略第一維的大**明,如:
void
func
(int array[3]
[10])
;void
func
(int array[
10]);
二者都是合法而且等價,但是不能把第二維或者更高維的大小省略。
方法二,形參宣告為指向陣列的指標。
例如:#include
void func(int n,char (*str)[5] )
int main()
;//一維陣列個數是否指定沒關係,夠用就行
func(3, str);
return 0;
}注意:
在void func(int n,char (str)[5])中,*array需要用括號括起來。*
這種形式的宣告引數是乙個指標,它指向具有5個元素的一維陣列。因為的優先順序比 * 的優先順序高,故*array必須用括號括起來,否則變成了
void func(int n,char *str[5]);
這時候引數相當於是宣告了乙個陣列,該陣列有5個元素。
方法三,形參宣告為指標的指標。
例如:#include
void func(int n, char **str )
void main()
;func(3, str);
}在函式中使用傳參過來的二維陣列(指標)進行陣列取值的時候不能使用(array[i][j])這種形式來取值。
參考資料:
C語言 二維陣列作為函式引數
想來學c語言的人,都會覺得陣列並不是很難,一問c語言最難的是什麼?指標?結構體?今天我就以我們認為不難的陣列聊聊。上學的時候老師就告訴我們 乙個就想當與乙個 這句話有問題嘛?答案是沒問題。但是,就是因為這個沒問題,導致工作中有問題。乙個簡單的思考 int arr 4 5 int p arr 請問,有...
C語言二維陣列作為函式引數
設有整型二維陣列a 3 4 如下 0 1 2 3 4 5 6 7 8 9 10 11 它的定義為 int a 3 4 設陣列a的首位址為1000,各下標變數的首位址及其值如圖所示。前面介紹過,c語言允許把乙個二維陣列分解為多個一維陣列來處理。因此陣列a可分解為三個一維陣列,即a 0 a 1 a 2 ...
C語言二維陣列作為函式引數傳遞
二維陣列中元素排列的順序是按行存放的,即在記憶體中先順序存放第一行的元素,再存放第二行的元素.二維陣列作為函式引數,實參可以直接使用二維陣列名,在被呼叫函式中對形引數組定義可以指定所有維數的大小,也可以省略第一維的大 明,如 void f int a 3 4 void f int a 4 它們是合法...