C语言的问题高手来帮我解释下什么意思

来源:百度知道 编辑:UC知道 时间:2024/07/08 19:42:55
#include<stdio.h>
main()
{
char *s[2]={"****","*****"};
while(*s[1]!='\0'){
printf("%s\n",s[0]+strlen(s[1])-1);
s[1]++;
}
}这个程序什么意思啊,尤其是printf那不懂,清详细点啊谢谢

首先你是定义了一个指针数组,里面存放了两个指向字符型的指针,一个是指向字符串"****\0",另一个是指向"*****\0",注意每个字符串的结尾部分有一个'\0'来标志结束,这个正是这个程序的循环可以运行的原因,接着往下看,当*s[1]!='\0'的时候执行循环体,因为s[1]是第二个指针,它的初始值是指向"*****\0"的第一个*的,*s[1]是对这个地址取值,那么就是*,不等于\0执行循环体,首先你看下strlen(s[1])是返回的s[1]指向字符串的长度,但是不会把\0算做一个字符,那么它的值就是5,减一就是4,但是s[0]现在是指向第一个字符串的第一个*的,向后移动四个位置是\0,所以,第一次循环不打印出东西,然后s[1]++,因为加加之后*s[1]!='\0',所以继续又一次执行循环体,但是现在由于s[1]这个指针移动了,所以strlen(s[1])的值就变了,减少一,变成了4,然后s[0]向后移动三个位置,打印出一个*,然后后面的分析就一样了,我觉得你应该能自己分析下来了吧,注意你的头文件少了个#include<string.h>,因为你要用strlen所以要包括这个头文件,然后程序最后还少一个},加上就可以运行了,最后的打印结果是:

*
**
***
****

不明白留言给我

程序意思是在屏幕上输出两个字符串"****","*****"
printf是c语言一个标准输出函数,默认为输出内容到屏幕。

强,够详细,正解!