📅  最后修改于: 2023-12-03 15:12:14.034000             🧑  作者: Mango
这是一道来自于 1998 年的考试题目,考查了关于指针的运用。题目要求我们实现一个函数 reverse 将一个字符串反转。对于程序员而言,能够灵活运用指针是必备技能之一,因为指针是 C 语言中非常重要的一个概念,它可以让我们操作内存里的数据,使程序更加高效。所以掌握指针是学好 C 语言的重要一步。
请你编写一个函数 void reverse(char *str),函数原型已经给定。函数参数是一个字符串,要求函数将该字符串反转后输出,比如将“hello world”反转为”dlrow olleh”。
void reverse(char *str)
反转字符串的基本思路是利用指针。将字符串头尾对称位置上的字符交换,从而实现反转。具体来说,就是定义两个指针,一个指向字符串头,一个指向字符串尾,然后不断将两个指针指向的字符交换,直到两个指针相遇。这里需要注意,一定要判断字符串是偶数还是奇数,以确定两个指针最终的位置。下面是具体实现的代码:
void reverse(char *str)
{
char *p = str, *q = str + strlen(str) - 1; // 定义两个指针,一个指向字符串头,一个指向字符串尾
while (p < q) { // 如果两个指针还没相遇
char tmp = *p; // 交换位置上的字符
*p++ = *q;
*q-- = tmp;
}
}
#include <stdio.h>
int main()
{
char str[] = "hello world";
printf("原字符串:%s\n", str);
reverse(str);
printf("反转后字符串:%s\n", str);
return 0;
}
输出结果如下:
原字符串:hello world
反转后字符串:dlrow olleh
这道题考察了指针的基本应用,对于初学者而言是一道不错的练手题目,然而在实际开发中,我们很少会用到这种原始的字符操作。因为字符串在 C 语言中有专门的库函数来处理,比如 strlen
、strcpy
、strcat
、strcmp
等,它们可以让我们轻松处理字符串,节省大量工作。所以,学习完指针后,建议大家再学习一下 C 语言的字符串处理函数。