c语言关于指针数组的一个问题

c语言关于指针数组的一个问题请问第二次循环后,p和i都加了1,为什么还是指向第二行,下面解释我知道p指向第二行,可是i已经为1了啊,p+1不应该第三行了吗... c语言关于指针数组的一个问题请问第二次循环后,p和i都加了1,为什么还是指向第二行,下面解释我知道p指向第二行,可是i已经为1了啊,p+1不应该第三行了吗 展开
 我来答
金色潜鸟
2017-12-28 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5618万
展开全部
第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}
追问
那么就是说书上是错了?
White_MouseYBZ
2017-12-28 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6504万
展开全部
图片在我这里看不清哟……
追问
那p+i+1后面那个1是啥意思
追答
隐隐约约看到*(p+i)+1,没有看到p+i+1,这二者是不一样的。此题中由于p是指向具有4个元素的一维数组的指针,那么p+i+1就是第p行后的i+1行的指针(都是从0起算);而*(p+i)+1则是第p+i行的第0个元素的指针(即*(p+i))后的一个元素的指针,即p+i行的下标为1的元素的指针。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式