请教各位学霸这道c语言题该怎么理解?为什么结果是9876 876呢?非常感谢!
2个回答
展开全部
这个程序中指针p第一次循环的初值是s(指向字符数组的第一个即下标为0的字符)所以输出是一个完整的字符串,后面加一个空格,打印"9876 ",
第二次循环指针p的值是p++,也就是(s+1)(指向字符数组的第二个即下标为1的字符)所以输出是从第二个字符开始到结尾的字符串,后面加一个空格,打印"876 "
第三次循环指针p的值是p++,也就是(s+2)因为循环终止条件是p<s+2所以退出循环,程序结束.
所以输出是"9876 876 ".
如果你不明白可以把循环终止条件改成p<s+4,那么程序就会输出"9876 876 76 6 ",每次p指针指向字符数组的后一个字符,每次输出其后面的字符串.
我给你一个循环终止条件改成p<s+4后的例子程序,希望可以帮助你理解原程序的输出结果.
#include<stdio.h>
void main()
{ char s[]="9876",*p;
for(p=s;p<s+4;p++)
printf("%s ",p);
}
追问
太谢谢您啦
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询