问题描述
- 求大神帮忙我有点疑惑了为什么这个循环可以执行
-
求大神帮忙我有点疑惑了为什么这个循环可以执行
int ia=[1,2,3,4,5];
for(int *p=ia;p<ia+5;p++)
printf(“%d”,*p);
解决方案
(1) p = ia ,那么p的地址就是ia数组的首地址,也就是p指向的数组的第一位1.
(2) p < ia+5 , p这个地址相当于ia数组的首地址,第一次+1 ,相当于取到a[1]地址,第二次取到a[2]的地址,以此类推,而ia+5是比ia[4]大点的地址。
所以,可以循环!*
解决方案二:
for循环能否执行,看第二个分号内的条件
p<ia+5
因为开始p=ia,所以显然小于ia+5,所以可以循环,因为每次p++,所以可以循环5次。
解决方案三:
因为经过p++处理后p<ia+5还成立,所以会继续执行
解决方案四:
p<ia+5 P一开始赋值是ia,所以能执行
解决方案五:
首地址<首地址+5,你让人家执行的,为什么不执行。
解决方案六:
写程序之前先把逻辑理清,第二个循环条件只要成立,就会显示,指针每次指向下一个数,1、2、3、4、5,而条件二重的P就是指针中的数,ia+5的结果就是6、7、8、9、10,<的条件永远成立
解决方案七:
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);
解决方案八:
因为 for 语句的执行条件满足,所以可以执行。
p是 一个指针,指向 数组 ia 的首地址, p小于 数组末尾地址。 for 语句条件满足。
时间: 2024-11-02 15:41:01