以下程序的输出结果是______。main() { int i,x[3][3]={9,8,7,6,5,4,3,2,1},*p=&x[1][1];
main(){inti,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]...
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]? 展开
{ 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]? 展开
1个回答
展开全部
二维数组在内存中是如下存储的,按行进行存储的
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] 所以结果就是那样了。
这里并不是拆分,而是计算的相对位置。
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] 所以结果就是那样了。
这里并不是拆分,而是计算的相对位置。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询