如何在函数中传递二维数组(可推广到多维
先展示一下函数一维数组传递方法
void ControlArray1(int *a){//此为用指针接收数组首地址
for(int i=0;i<=5;i++)
a[i]=i;
}
void ControlArray2(int b[]){
for(int i=0;i<=5;i++)
b[i]=i;
}
void ControlArray3(int *p){//用指针接收指针
for(int i=0;i<=5;i++)
p[i]=i;
}
void main(){
int a[6],b[6],c[6];
ControlArray1(a);//数组名即为首地址
ControlArray2(b);
int *p=c;
ControlArray3(p);//与方法1大致相同,但此是在主函数中先利用指针指向数组首地址,可由此推广到二维
}
而后讲二维数组我最常用传递方法
此方法在主函数中需要用指针来指向数组
void ControlArray12(int *p[]){//接收指针数组
for(int i=0;i<3;i++)
for(int j=0;j<=5;j++)
p[i][j]=i+j;
//可在函数里递归调用ControlArray12(p) 此时实参仍然是传指针p
}
void main(){
int ab[3][5];
int *p[3];//定义一个指针数组,其含有3个指针指向int类型
for(int i=0;i<3;i++)
p[i]=ab[i];//让3个指针分别指向ab的3行
ControlArray12(p);
再介绍一种方法:利用结构体将二维数组包含在内(可推广到多维)
typedef struct{//若要推广到多维只需在此结构体内定义多维数组既可
int ab[3][6];
}Graph;
void ControlStructArray(Graph &graph){
for(int i=0;i<3;i++)
for(int j=0;j<=5;j++)
graph.ab[i][j]=i+j;
}
void main(){
Graph g;
ControlStructArray(g);
}