不是的,答案是9876876
输出语句的那个星号要去掉
我对这个答案不理解,不知道怎么算的
你会吗老哥,可以教下我详细解析步骤吗
追答s是数组名,在c语言中数组名是整个数组首元素的地址,
s+2得到的地址是数组第三个元素的地址,
p=s是让p指针指向s[]数组的首元素地址,
p++使指指向数组的下一个元素的地址,
循环中的条件p<s+2,所以循环最多循环2次,
所以只会打印98
你好,我想问下后面这个876怎么出来的,我基础有点差,抱歉
6<s+2,这次循环输出9876
在次循环就是用\0<s+2比较了对吗
追答第一次用p与s+2比较,第二次用p+1的值与s+2比较。
追问第一次是9<s+2,s+2也就是7,9<7这个条件不成立
第二次是8<7也不成立
第三次循环7<7也不成立
第四次6<7成立输出9876
后面p++那就是\0了,所以我不知道后面876怎么出来的
老哥教下我详细步骤,感激不尽
追答p++使p增1。原先p==s,即p是指向9的;p++后就指向8了,怎么会是'\0'?'\0'在6后面呢!
不是9<s+2而是p<s+2——p是指向9的,是9的地址,s+2是7的地址,比较的是两个地址而不是这些地址里的数。数组从低地址向高地址依次存放,所以9的地址小于8的地址小于7的地址……