2 qq 33555452 qq_33555452 于 2016.02.17 00:28 提问

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

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

8个回答

ghostyusheng
ghostyusheng   2016.02.17 13:13
已采纳

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

caozhy
caozhy   Ds   Rxr 2016.02.17 07:46

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

Mr_dsw
Mr_dsw   Ds   Rxr 2016.02.17 08:38

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

beacon_2011
beacon_2011   Rxr 2016.02.17 08:54

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

luochoudan
luochoudan   Ds   Rxr 2016.02.17 10:33

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

qq_25093755
qq_25093755   2016.02.17 10:46

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

wangqing_12345
wangqing_12345   2016.02.17 15:54

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);

ririyeye008
ririyeye008   2016.02.17 01:05

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

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!