1.方式1.void fun(int a[4][6]); //二維數據作為函數參數時,要明確指明二維數組的列數.
void fun(int a[][6]) //二維數組行數可以省略
另外,不能用非常量定義二維數組作為其下標.
*/
void fun1(int a[][3],int n){//數組的行數
for (int i = 0; i < n; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ",a[i][j]);
}
}
}
/*
方式2.void fun(int (*pArray)[6]) 應用一維指針組作為參數
*/
void fun2(int (*arr)[3],int n){
for (int i = 0; i < n; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ",arr[i][j]);
}
}
}
/*
方式3.void fun(int (&arr)[10][10]) 應用二維數組引用作為參數,在此必須指明二個維數
方式4.void fun(int (*arr)[10][10]) 應用二維指針數組作為參數,在此必須指明二個維數
注:以上四種方法通用,但是數組傳遞時,僅傳值,對傳入參數不做改變
方式5. void fun(int** arr, int m, int n) 應用二重指針作為形參,傳入的實參也必須是二重指針,巧妙地利用new分配內存空間,可以用非常量定義
arr[i][j]獲取值是不對的,因為編譯器不能正確的為它尋址,所以我們需要模仿編譯器的行為把arr[i][j]這樣的式子
手工轉變為 *((int*)arr + n*i + j);