字符串反转(指针实现)
时间: 2023-12-14 17:32:32 浏览: 109
以下是使用指针实现字符串反转的C语言代码:
```c
#include <stdio.h>
#include <string.h>
void reverse(char *str);
void reverse(char *str) {
char *start = str;
char *end = start + strlen(str) - 1;
char temp;
while (start < end) {
temp = *start;
*start = *end;
*end = temp;
start++;
end--;
}
}
int main(void) {
char str[] = "hello";
printf("原始字符串: %s\n", str);
reverse(str);
printf("反转后字符串: %s\n", str);
return 0;
}
```
该代码中,`reverse()`函数使用指针实现字符串反转。首先,定义两个指针`start`和`end`,分别指向字符串的首地址和尾地址。然后,使用一个`while`循环,不断交换`start`和`end`指向的字符,直到`start`指针大于等于`end`指针。最后,将反转后的字符串输出即可。
相关问题
c语言用指针实现字符串反转
可以使用指针来实现字符串反转。具体的实现方法如下:
```c
#include <stdio.h>
#include <string.h>
void reverse_string(char *str) {
int len = strlen(str);
char *start = str;
char *end = str + len - 1;
char temp;
while (start < end) {
temp = *start;
*start = *end;
*end = temp;
start++;
end--;
}
}
int main() {
char str[] = "hello, world";
printf("Original string: %s\n", str);
reverse_string(str);
printf("Reversed string: %s\n", str);
return 0;
}
```
在这个例子中,我们定义了一个 `reverse_string` 函数,它接收一个指向字符串的指针作为参数。在函数内部,我们使用了三个指针来实现字符串反转。`start` 指针指向字符串的起始位置,`end` 指针指向字符串的末尾位置,`temp` 变量用来交换两个字符的值。
通过一个 `while` 循环,我们不断将 `start` 指针向字符串末尾移动,将 `end` 指针向字符串起始位置移动,同时交换它们指向的字符的值。当 `start` 指针大于等于 `end` 指针时,字符串反转过程结束。最后,我们将反转后的字符串输出到屏幕上。
运行程序,输出结果如下:
```
Original string: hello, world
Reversed string: dlrow ,olleh
```
可以看到,字符串已经被成功地反转了。
利用指针数组实现字符串反转
可以使用指针数组来实现字符串反转。首先,通过指针数组将字符串的每个字符存储在不同的指针中。然后,通过交换指针的位置来实现字符串的反转。
以下是一个使用指针数组实现字符串反转的示例代码:
```c
#include <stdio.h>
#include <string.h>
void reverseString(char* str) {
int length = strlen(str);
// 创建一个指针数组,每个指针指向原字符串中的一个字符
char* ptrArray[length];
for (int i = 0; i < length; i++) {
ptrArray[i] = &str[i];
}
// 使用双指针法交换指针的位置实现字符串反转
int start = 0;
int end = length - 1;
while (start < end) {
char* temp = ptrArray[start];
ptrArray[start] = ptrArray[end];
ptrArray[end] = temp;
start++;
end--;
}
// 输出反转后的字符串
printf("Reversed String: ");
for (int i = 0; i < length; i++) {
printf("%c", *ptrArray[i]);
}
printf("\n");
}
int main() {
char str[] = "Hello, World!";
printf("Original String: %s\n", str);
reverseString(str);
return 0;
}
```
运行以上代码,输出结果如下:
```
Original String: Hello, World!
Reversed String: !dlroW ,olleH
```
这样就利用指针数组成功实现了字符串的反转。