下面的程序怎么理解?答案是什么?#include <stdio.h> char s[]="ABCD"; main( ) { char *p; fo...

下面的程序怎么理解?答案是什么?#include <stdio.h> char s[]="ABCD";
main( )
{ char *p;
for(p=s;p<s+4;p++)
printf("%s",p);
}

答案:ABCDBCDCDD
初始p=s,s指向的是"ABCD",第一个printf打印出ABCD
p++后 p=s+1 s+1指向的是"BCD" 接下去打印BCD
p=s+2 打印CD, p=s+3打印D
等到p=s+4 for中的表达式p<s+4不成立,故退出for循环。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-06-28
for(p=s;p<s+4;p++)
printf("%s",p);
让程序从s[0]开始(注意p<s+4这一句,说明只打印四次)每次打印一个字符串,
记住,是字符串
第一次 ABCD
第二次 BCD
第三次 CD
第四次D
答案:ABCDBCDCDD
第2个回答  2010-06-28
只能写100字
p++是与语句p=p+1等效的,执行p++后,程序为指针p重新赋予了新地置,因此指针P指向位置B,而不是再次指向位置A,如果把P++改为P+1,那么指针P的位置始终都是指向位置A,P+1指向位置B,这时程序会死循环
第3个回答  2010-06-28
开始p指向s的头,以printf("%s",p);则输出ABCD循环后p指向B,printf("%s",p);输出BCD,继续循环p指向C,printf("%s",p);输出CD,继续循环p指向D,printf("%s",p);输出D。程序结束。
第4个回答  2010-06-28
ABCDBCDD
相似回答
大家正在搜