谁给我解释一下这个简单的C语言程序

来源:百度知道 编辑:UC知道 时间:2024/04/29 04:36:01
#include "stdio.h"
void f(char *st,int i)
{
st[i]='\0';
printf("%s\n",st);
if(i>1)f(st,i-1); /*递归*/
}
void main()
{
char st[]="abcdef";
f(st,5);
getch();
}
为什么输出这样的答案
abcde
abcd
abc
ab
a
而st[i]='\0'有什么作用??

就是普通的递归,我不知道你的getch()是用来做什么的,好像是多余的,st[i]='\0'用来设置字符串结尾。st中的内容开始为“a b c d e f \0”,第一次调用st"a b c d e \0 \0",......。printf("%s\n",st)遇到‘\0’停止输出,所以为你打出的那些。

st[i]='\0' 说明字符串结束了 if(i>1)f(st,i-1); 是递归,每次少打一个字符

st[]='\0'结束标志1~