int main()
{
int a[3][3]={{1,2,3},{4,5,6,},{7,8,9}};
foo(a);
printf("%d\n",a[2][1]);
return 0;
}
这个函数谁能告诉我意思吗?
#include<stdio.h>
void foo(int b[][3])
{
++b;
b[1][1]=9;
}
int main()
{
int a[3][3]={{1,2,3},{4,5,6,},{7,8,9}};
foo(a);
printf("%d\n",a[2][1]);
return 0;
}
1 回答

陪伴而非守候
TA贡献1532条经验 获得超8个赞
答案是9。
第一,首先要清楚函数中数组传递的是地址,而不是值。
第二,foo函数中 参数 (int b[][3])其实本质是一个指针变量
第三,当调用到foo(a)时候,把a的地址传给了b,然后执行foo函数,其中++b,其实就是把a的地址换到第二行,也就是把b当前的地址推移到了a[1][0]。然后开始b[1][1]=9,这一步其实就是, a[1+1][0+1] 也就是 a[2][1]=9; 所以答案输出为9.
- 1 回答
- 0 关注
- 10 浏览
添加回答
举报
0/150
提交
取消