2 回答

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超6個(gè)贊
可以寫成兩個(gè)參數(shù) void mini(int **a, int n)
一個(gè)參數(shù)傳數(shù)組指針,一個(gè)參數(shù)傳數(shù)組大小

TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超10個(gè)贊
所謂二維數(shù)組,實(shí)際上是指向數(shù)組的指針,比如:
int n=2,m=3;
int arr[n][m];
實(shí)際上相當(dāng)于:
int n=2,m=3;
int (*arr)[m];
所以,傳遞二維數(shù)組作為參數(shù),實(shí)際上就是傳遞了一個(gè)指針。
將形參的類型定義成int*,再在函數(shù)內(nèi)部轉(zhuǎn)換回指向數(shù)組的指針就行了,比如:
void f(int *p,int row,int column)
{
int (*arr)[column]=(int (*)[column])p;
//使用二維數(shù)組arr
}
這樣傳遞參數(shù):
int n=5,m=6;
int arr[n][m];
f((int*)arr,n,m);
下面是一個(gè)例子:
#include <stdio.h>
void f(int *p,int row,int column)
{
int (*arr)[column]=(int (*)[column])p;
for(int i=0;i<row;i++)
{
for(int j=0;j<column-1;j++)
printf("%d,",arr[i][j]);
printf("%d\n",arr[i][column-1]);
}
}
int main()
{
int n;
scanf("%d",&n);
int arr[n][n];
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
arr[i][j]=i*n+j;
}
f((int*)arr,n,n);
return 0;
}
這是運(yùn)行截圖:
- 2 回答
- 0 關(guān)注
- 280 瀏覽
添加回答
舉報(bào)