c语言指针数组的一个题目

2024-11-30 17:02:19
推荐回答(1个)
回答1:

第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}