先展示代码
#include<stdio.h>
void print(char* name);
int main()
{
char name[20] = {0};
scanf("%s", name);//输入字符串
print(name);
return 0;
}
void print(char* name)//颠倒输出函数
{
if (*name != '\0')//
{
print(name + 1);
}
putchar(*name);//递归出口
}
注意的点:
1、输入字符串的时候并不会读入字符串后面的'\0',但输入之后又会自动补充上去,'\0'并不是空格,而是空字符(相当于不在面板上输出什么)。
2、传数组的函数实际是传的数组的第一个字符的地址,所以函数定义时用char型指针接收,所以name所指向的就是第一个字符,第二个字符就是name+1,第三个是name+2,以此类推,但使用该地址所对应的字符时注意用*name。
3、递归的使用,当读入的不是空字符时,进行下一个字符判断(将下一个字符的地址传入),直到找到递归出口(读到空字符),开始输出字符。