发布网友 发布时间:2024-10-24 03:44
共2个回答
热心网友 时间:8分钟前
这个程序中指针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);
}
热心网友 时间:5分钟前
开始p是指向字符串9876的第一个字符9,所以作为字符串输出p就是9876。
然后执行p++,p指向字符串9876的第二个字符8,作为字符串输出p就是876。
然后又执行p++,p指向字符串9876的第三个字符7,此时p已经等于s+2,所以退出循环。
所以输出就是9876 876 。