char s[]="9876",*p;for(p=s;p<s+2;p++)printf("%s\n,p");答案为什么是9876 876

p<s+2.指针不是指在7上吗?要小于s+2的话,为什么还要输出76?

p=s;指针p指向s数组的首地址,输出字符串%s时,从9开始,输出整个字符串9876
p++后,p=s+1;指针p指向了s+1,指向了9876的8,输出字符串%s时,从8开始,输出876
再p++后,循环条件不成立,跳出循环,程序结束
所以,输出
9876
876
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-09-08
数组的下标是从0开始的。比如定义了int a【3】其实没有a【3】这个元素。因为a【0】,a【1】,a【2】已经是3个了
相似回答