二维数组只能作为函数实参传递
方法一
int in(int a[][j]);
in(a);
#include<stdio.h>#define i 3#define j 3//输入二维数组信息int in(int a[][j]){printf("请输入二维数组信息:\n");for(int p=0;p<i;p++)for(int q=0;q<j;q++){scanf("%d",&a[p][q]);}return 0;}//输出修改后二维数组信息int out(int a[][j]){a[0][0] = 100;printf("修改后二维数组信息:\n");for(int p=0;p<i;p++){for(int q=0;q<j;q++){printf("%d ",a[p][q]);}printf("\n");}return 0;}int main(){int a[i][j];in(a);out(a);}
方法二
二维数组的存储是线性存储,可以用数组第一个数的地址作为参数传递,进而推出数组中的其它数。
int in(int *a);
in(&a[0][0]);
#include<stdio.h>#define i 3#define j 3//输入二维数组信息int in(int *a){printf("请输入二维数组信息:\n");for(int p=0;p<i;p++)for(int q=0;q<j;q++){scanf("%d",a+p*j+q);}return 0;}//输出修改后二维数组信息int out(int *a){*(a) = 100;printf("修改后二维数组信息:\n");for(int p=0;p<i;p++){for(int q=0;q<j;q++){printf("%d ",*(a+p*j+q));}printf("\n");}return 0;}int main(){int a[i][j];in(&a[0][0]);out(&a[0][0]);}