01递归方式逆序打印
02递归和全局变量(把逆序的结果存入全局变量)
03递归和非全局变量(递归指针做函数参数)
#define _CRT_SECURE_NO_WARNINGS
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
//01递归方式逆序打印
int reverse01(char *p)
{
if (p == NULL) //递归结束的异常条件
{
return -1;
}
if (*p == '\0') //递归结束的条件
{
return 0;
}
reverse01(p+1); //此时并不会接着执行打印,而是p的地址+1,不断入栈
//开始递归调用,保护程序执行现场,以便程序返回
//补充一个额外的知识点:p++相当于p=p+1,给p做了重新赋值。而p+1并不给p重新赋值
printf("%c\n",*p);
}
//02递归和全局变量(把逆序的结果存入全局变量)
char g_buf[1000];//用全局变量把逆序的结果保存下来
int reverse02(char *p)
{
if (p == NULL) //递归结束的异常条件
{
return -1;
}
if (*p == '\0') //递归结束的条件
{
return 0;
}
reverse02(p + 1);
//printf("%c\n", *p);
//strncpy(g_buf, p,