c语言关于指针数组的一个问题
c语言关于指针数组的一个问题请问第二次循环后,p和i都加了1,为什么还是指向第二行,下面解释我知道p指向第二行,可是i已经为1了啊,p+1不应该第三行了吗...
c语言关于指针数组的一个问题请问第二次循环后,p和i都加了1,为什么还是指向第二行,下面解释我知道p指向第二行,可是i已经为1了啊,p+1不应该第三行了吗
展开
2个回答
展开全部
第2个循环语句结果不受第一个循环语句影响。因为 重新 给了 p 初始 位置:指向 a 的始地址。
p=a;
for (i=0;i<2;p++,i++) printf("%4d\t",*(*(p+i)+1));
循环语句可以看成:
for (i=0; i<2; i++) { printf("%4d\t",*(*(p+i)+1)); p++;}
i=0 时, p 指向a 的始地址, p+i 指向 {1,3,5,7} 这行,输出 a[0][1] 这个元素 3。步长 p++ 走了 1
i=1时, 因 p+i 又增1, 所以指向{17,19,21,23} 这行,输出 a[2][1] 这个元素 19。
行号从0起算。第 0行 {1,3,5,7} ,第一行 {9,11,13,15},第2行 {17,19,21,23}
p=a;
for (i=0;i<2;p++,i++) printf("%4d\t",*(*(p+i)+1));
循环语句可以看成:
for (i=0; i<2; i++) { printf("%4d\t",*(*(p+i)+1)); p++;}
i=0 时, p 指向a 的始地址, p+i 指向 {1,3,5,7} 这行,输出 a[0][1] 这个元素 3。步长 p++ 走了 1
i=1时, 因 p+i 又增1, 所以指向{17,19,21,23} 这行,输出 a[2][1] 这个元素 19。
行号从0起算。第 0行 {1,3,5,7} ,第一行 {9,11,13,15},第2行 {17,19,21,23}
追问
那么就是说书上是错了?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询