泰妍why歌曲百度云超品:一道简单C问题

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/30 11:22:44
(36) 有以下程序
main()
{char s[]="ABCD",*p;
for(p=s+1;p<s+4;p++)printf("%s\n",p);
}
程序运行后的输出结果是
答案BCD
CD
D
讲下为什么可以吗?

p=s+1时,输出的字符串是从第二个字符开始的,也就是B开始的,然后输出CD,最后换行.也就是输出了BCD;
p=s+2时,输出的字符串是从第三个开始的,也就是从C开始,然后输出D,最后换行.也就是输出了CD;
p=s+3时,输出的字符串是从第四个开始的,也就是从D开始,可以看出D后面没有字符了,然后换行.
所以最后结果为:
BCD
CD
D

%s是输出字符串。遇到\0则停止。
数组s[]有5个成员,最后一个s[4]为\0是使用字符串常量时自动加上的。
所以从p元素开始用%s输出的话就会把p和以后的元素都输出,直到\0。
(\0不输出)