二維陣列的引數傳遞

2021-08-22 13:27:17 字數 1127 閱讀 5297

參考鏈結

問題在c++語言中實際上沒有真正的多維陣列,所謂的多維陣列實際上是陣列的陣列。

和所有陣列一樣,當將多維陣列傳遞給函式時,真正傳遞給函式的是指向陣列首元素的指標。因為我們處理的是陣列的陣列,所以首元素本身就是乙個陣列,指標就是乙個指向陣列的指標。將二維陣列作為引數進行傳遞時,必須指明所有維數大小或者省略第一維的,但是不能省略第二維或者更高維的大小

以下幾種是正常的傳遞方式:

void fun1(int arr[10][10]);

void fun2(int arr[10]);

但是下面這種傳遞方式是錯誤的:

void fun3(int );    //必須指明第二維的大小
當我們需要使用第三種傳遞方式時,應該怎麼做呢?

解決方案

給出示例:

#include 

#include

using

namespace

std;

void fun(int *a, int m, int n)

}}int main()

; for (int i=0; ifor (int j = 0; j1;}}

cout

<< "before : "

<< endl;

for (int i=0; ifor (int j=0; jprintf("%d ", a[i][j]);

}cout

<< endl;

}cout

<< endl;

fun((int *)a, m, n);

cout

<< "after : "

<< endl;

for (int i=0; ifor (int j=0; jprintf("%d ", a[i][j]);

}cout

<< endl;

}cout

<< endl;

}

最後的結果為:

引數傳遞二維陣列

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