...题该怎么理解?为什么结果是9876 876呢?非常感谢!

发布网友 发布时间: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 。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com