以下程序的输出结果是______。main() { int i,x[3][3]={9,8,7,6,5,4,3,2,1},*p=&x[1][1];

main()
{ int i,x[3][3]={9,8,7,6,5,4,3,2,1},*p=&x[1][1];
for(i=0;i<4;i+=2) printf("%d",p[i]);
}
答案解析:
i=0时,输出p[0],也就是x[1][1],输出是5;
i=2时,输出p[2],即p[2+0],也就是x[2][0],输出是3。
为啥p[2]即p[2+0]?
为啥不能p[1+1]?
为啥p[2+0]也就是x[2][0]?

二维数组在内存中是如下存储的,按行进行存储的

x[0][0] 9 x[0][1] 8 x[0][2] 7
x[1][0] 6 x[1][1] 5 4
x[2][0] 3 2 1

其实也可以看做一维数组的存储 x[0]----x[8] x[0]=9 x[1]=8 x[8]=1

因为存储的时候都是一样的

p指向的是 x[1][1] 也就是说 p[0] = x[1][1]
p[1] = x[1][2] p[2] = x[2][0] 所以结果就是那样了。

这里并不是拆分,而是计算的相对位置。
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网