为了账号安全,请及时绑定邮箱和手机立即绑定

这个函数谁能告诉我结果吗?为什么,详细解答

这个函数谁能告诉我结果吗?为什么,详细解答

C
慕的地10843 2023-01-04 18:14:15

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.

查看完整回答
反对 回复 2023-01-06

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信