C語言二維陣列作為函式引數的使用

2021-09-10 03:34:53 字數 1088 閱讀 2499

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 它們是合法...