刚才提了一个关于二维数组如何用指针导入数组的问题,之前在csdn上搜索的是这么写void f(int a[][])但是不知道为什么我的IDE总是在报错(orz
刚开始只能用void f(int (*a)[4])的方式导入,但是这样当我不知道二维数组实际上有几个元素的时候,这个就不太方便。
本来苦恼了很久,但是之后在学习malloc函数分配数组的方式的时候,终于找到了一种好理解的令我豁然开朗的方法,分享给大家。
在一维数组中,我们用这样的方式来导入的函数:
void f(int *a);
main()
{
int a[3];
f(a);
}
而二维数组其实就是
void input(int **a)
{
for(int i=0;i<3;i++)
for(int j=0;j<2;j++)
scanf("%d",&a[i][j]);
}
int main()
{
int **a;
//给二维数组分配空间
a=(int **)malloc(sizeof(int)*3);
for(int i=0;i<3;i++) a[i]=(int *)malloc(sizeof(int)*2);
input(a);//传入地址
for(int i=0;i<3;i++)
for(int j=0;j<2;j++)
printf("%d ",a[i][j]);
return 0;
}