引數 存在二維陣列

2022-08-24 23:06:08 字數 887 閱讀 9364

簡單點陣列名作為形參

void func1(int array[10

])int

main()

編譯通過,注意形參宣告一定要給出第二個維度的大小,要不編譯不過。

一維陣列指標作為形參

void func2(int (*parray)[10

])void func2_1(int (*parray)) //

編譯通過,無法呼叫,第二維沒有給出

intmain()

其實二維陣列名就是乙個指向一維陣列的指標,所以這種宣告方式ok。必須指定一維陣列的長度,如果沒有指定的話,函式宣告編譯通過。但是如果一旦有呼叫**,就有編譯不通過,因為沒有實參型別能匹配int.

二維陣列引用作為形參

void func3(int (&parray)[10][10

])int

main()

必須指定兩個維度的長度。

二維陣列指標作為形參

void func4(int (*parray)[10][10

])int

main()

必須指定兩個維度的長度

回到本文開始提到的問題:可以用雙重指標int**作為形參,接受二維陣列實參嗎?答案是肯定的,但是又侷限性。用雙重指標作為形參,那麼相應的實參也要是乙個雙重指標。事實上,這個雙重指標其實指向乙個元素是指標的陣列,雙重指標的宣告方式,很適合傳遞動態(即維數是變數)建立的二維陣列。怎麼動態建立乙個二維陣列?如下程式:

void func5(int** parray, int

n)

intmain()

引數傳遞二維陣列

cpp view plain copy void func1 intiarray 10 intmain 編譯通過,注意形參宣告一定要給出第二個維度的大小,要不編譯不過。cpp view plain copy void func2 int parray 10 void func2 1 int parr...

引數傳遞二維陣列

來看 c primer 中給出的方法 void func1 int iarray 10 int main 編譯通過,注意形參宣告一定要給出第二個維度的大小,要不編譯不過。void func2 int parray 10 void func2 1 int parray 編譯通過,無法呼叫 int ma...

引數傳遞二維陣列

來看 c primer 中給出的方法 cpp view plain copy void func1 intiarray 10 intmain 編譯通過,注意形參宣告一定要給出第二個維度的大小,要不編譯不過。cpp view plain copy void func2 int parray 10 vo...