字符串逆序(递归实现)

内容编写一个函数 reverse_string(char * string)(递归实现)

实现:将参数字符串中的字符反向排列,不是逆序打印。

*有三种含义:

1 相乘:2*2=4;

2 定义一个指针变量

例 int a=10;

 int* p = &a;(注意: int* 是一个整体,我刚开始一直以为 *p 是一个整体,这个一定要理解

3  *p =10;(这个相当于根据a的地址找出a的值)
在这里用的是 第二和第三种用法。

(在这里建议用vs2019 或者 vscode 编写代码,因为本人用了之后觉得写出来的代码比较整齐,它俩会自动格式化代码)

思路:

逆置字符串,循环的方式实现非常简单

  1. 给两个指针,left放在字符串左侧,right放在最后一个有效字符位置

  2. 交换两个指针位置上的字符

  3. left指针往后走,right指针往前走,只要两个指针没有相遇,继续2,两个指针相遇后,逆置结束

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#define _CRT_SECURE_NO_WARNINGS 1
# include <stdio.h>
# include <string.h>
void reverse(char* arr)
{
char* left = arr;
char* right = arr + strlen(arr) - 1;
while(left<right)
{
char tmp = *left;
*left = *right;
*right = tmp;
left++;
right--;
}


}


int main(void)
{
char arr[100] = {'\0'};
scanf("%s",arr);
reverse(arr);
printf("%s", arr);
return 0;
}


字符串逆序(递归实现)
https://6jackjiang.github.io/2021/11/03/categories/C语言/字符串逆序(递归实现)/
作者
米兰的小铁匠
发布于
2021年11月3日
许可协议