这是我在学习c语言时出现的一个有点难的问题;当我第一次想输出a,b,c数组结果时我的代码是:#include<stdio.h>
int main()
{
int a[]={1,2,3};
int b[]={4,5,6};
int c[]={7,8,9};
int*arr[]={a,b,c};
int i;
int m;
for(i=0;i<3;i++)
{
printf("%d ",*(arr[i]));
}
puts("");
}
return 0;
}
得到的结果却是:1
4
7
这里需要知道指针数组arr是一个数组,且是一个特殊的二维数组,上面代码中*(arr[i])只能分别表示a,b,c三个数组的第一个元素。
资料:
#include<stdio.h>
int main()
{
int a[]={1,2,3};
int b[]={4,5,6};
int c[]={7,8,9};
int*arr[]={a,b,c};
int i;
int m;
for(i=0;i<3;i++)
{
for(m=0;m<3;m++)
{
//printf("%d ",arr[i][m]);
printf("%d ",*(arr[i]+m));
}
puts("");
}
return 0;
}
输出结果:
1 2 3
4 5 6
7 8 9
修改后使用二维数组的表达方式便能得出正确的结果。
注:代码中后者来自b站up黑马程序员