C語言用二維陣列作為函式入口引數的小結

2021-10-09 23:05:48 字數 754 閱讀 4938

c語言裡面定義了二維陣列

int arr[100][200];

那arr就是乙個指標,指標型別是什麼呢?是int(*)[200]。

所以最自然的是用下面的func2(int (*a)[200]) 或func3(int a[200]),這樣main函式呼叫的時候直接用func2(arr)或func3(arr)就可以了。這裡的a是乙個指標,指向乙個int陣列,這個陣列有200個元素。

當然也可以用func0(int *a),但func0裡面不能直接用a[i][j],因為編譯器不認識。

訪問a[i][j]要用*(a + 200 * i + j)。

也可以用func1(int **a),這是要注意先把a轉換為一維的(int *)陣列,然後再用*((int *)a + 200 * i + j)來訪問。

#include void func0(int *a) 

void func1(int **a)

void func2(int (*a)[200])

void func3(int a[200])

int main()

擴充套件到3維陣列怎麼辦呢?假設我們定義了int arr[100][200][300]。

實際上類似func2(), func3(),我們可以用

func2(int (*a)[200][300])

或func2(int a[200][300])

當然也可以用類似func0()或func1()的二維或三維指標來搞定。

二維陣列作為形參

以下是網上摘抄的一段 首先,我引用了譚浩強先生編著的 c程式設計 上面的一節原文,它簡要介紹了如何將二維陣列作為引數傳遞,原文如下 略有改變,請原諒 原文開始 可以用二維陣列名作為實參或者形參,在被呼叫函式中對形引數組定義時可以指定所有維數的大小,也可以省略第一維的大 明,如 void func i...

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 ...