qq_33555452
qq_33555452
采纳率100%
2016-02-16 16:28

求大神帮忙我有点疑惑了为什么这个循环可以执行

  • c
已采纳

求大神帮忙我有点疑惑了为什么这个循环可以执行
int ia=[1,2,3,4,5];
for(int *p=ia;p<ia+5;p++)
printf(“%d”,*p);

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

8条回答

  • ghostyusheng ghostyusheng 5年前

    (1) p = ia ,那么p的地址就是ia数组的首地址,也就是p指向的数组的第一位1.
    (2) p < ia+5 , p这个地址相当于ia数组的首地址,第一次+1 ,相当于取到a[1]地址,第二次取到a[2]的地址,以此类推,而ia+5是比ia[4]大点的地址。
    所以,可以循环!
    *

    点赞 1 评论 复制链接分享
  • wangqing_12345 此去经年.COM 5年前

    int ia=[1,2,3,4,5];这种写法就有问题吧,个人感觉应该这样写ia[] = {1,2,3,4,5};
    其次
    for(int *p=ia;p<ia+5;p++)
    其实和
    int *p;
    for (p=ia;p<ia+5;p++)
    是一样的
    p = ia
    那 p<ia+5 当然满足了
    所以循环能执行,并循环5次
    当for循环后面没有{}时
    则循环for后的第一个语句即
    printf(“%d”,*p);

    点赞 评论 复制链接分享
  • qq_25093755 白若蓝 5年前

    写程序之前先把逻辑理清,第二个循环条件只要成立,就会显示,指针每次指向下一个数,1、2、3、4、5,而条件二重的P就是指针中的数,ia+5的结果就是6、7、8、9、10,<的条件永远成立

    点赞 评论 复制链接分享
  • luochoudan 丑旦 5年前

    首地址<首地址+5,你让人家执行的,为什么不执行。

    点赞 评论 复制链接分享
  • beacon_2011 beaconD 5年前

    p<ia+5 P一开始赋值是ia,所以能执行

    点赞 评论 复制链接分享
  • Mr_dsw Andoter 5年前

    因为经过p++处理后p<ia+5还成立,所以会继续执行

    点赞 评论 复制链接分享
  • caozhy 回答这么多问题就耍赖把我的积分一笔勾销了 5年前

    for循环能否执行,看第二个分号内的条件
    p<ia+5
    因为开始p=ia,所以显然小于ia+5,所以可以循环,因为每次p++,所以可以循环5次。

    点赞 评论 复制链接分享
  • ririyeye008 ririyeye008 5年前

    因为 for 语句的执行条件满足,所以可以执行。
    p是 一个指针,指向 数组 ia 的首地址, p小于 数组末尾地址。 for 语句条件满足。

    点赞 评论 复制链接分享