void swap(char **str1,char **str2)
时间: 2023-12-18 10:29:06 浏览: 200
这是一个C语言程序,其中定义了一个名为swap的函数,函数的参数是两个指向字符指针的指针。函数的作用是交换这两个指针所指向的字符串。具体实现如下:
```c
void swap(char **str1,char **str2) {
char **tmp = str1;
*str1 = *str2;
*str2 = *tmp;
}
```
在main函数中,定义了两个字符串指针str1和str2,并分别指向"hello word"和"word hello"这两个字符串。然后调用swap函数,将这两个指针所指向的字符串进行了交换。最后输出交换后的结果。
相关问题
c语言运用指针数组参数编写函数 ,实现字符串交换 void swap(char **str1, char **str2)
在C语言中,当你想要通过指针数组作为参数传递并实现字符串交换时,可以先创建一个临时字符数组来存储其中一个字符串的内容,然后分别更新两个原字符串指向的内存地址。下面是一个简单的`swap`函数示例:
```c
#include <stdio.h>
#include <string.h>
void swap(char **str1, char **str2) {
// 1. 创建一个临时数组来存储 str1 的内容
char temp[strlen(*str1) + 1]; // 假设输入的字符串没有包含空字符'\0'
// 2. 将 str1 的内容复制到 temp 中
strcpy(temp, *str1);
// 3. 更新 str1 指向新的字符串(即 str2)
*str1 = *str2;
// 4. 将 str2 的原始值赋给 str1
*str2 = temp;
}
int main() {
char str1[] = "Hello";
char str2[] = "World";
printf("Before swap:\nstr1 = %s\nstr2 = %s\n", str1, str2);
swap(&str1, &str2); // 传入的是指针地址
printf("After swap:\nstr1 = %s\nstr2 = %s\n", str1, str2);
return 0;
}
```
在这个例子中,`swap`函数接收两个字符串的指针,实际上是它们首字符的地址。函数内部首先创建一个新的字符数组来保存第一个字符串的内容,然后交换两个指针所指向的字符串。注意,在实际应用中,应确保有足够的空间来容纳复制的字符串。
void sort(char **str_arr, int size)
该函数的作用是对字符串数组进行排序,可以采用快速排序或归并排序等算法实现。下面是一个使用快速排序的示例代码:
```
void swap(char **a, char **b) {
char *temp = *a;
*a = *b;
*b = temp;
}
int partition(char **arr, int low, int high) {
char *pivot = arr[high];
int i = low - 1;
for (int j = low; j < high; j++) {
if (strcmp(arr[j], pivot) < 0) {
i++;
swap(&arr[i], &arr[j]);
}
}
swap(&arr[i + 1], &arr[high]);
return i + 1;
}
void quickSort(char **arr, int low, int high) {
if (low < high) {
int pi = partition(arr, low, high);
quickSort(arr, low, pi - 1);
quickSort(arr, pi + 1, high);
}
}
void sort(char **str_arr, int size) {
quickSort(str_arr, 0, size - 1);
}
```
这里使用了一个 `swap` 函数来交换两个字符串指针,使用了 `strcmp` 函数比较两个字符串的大小,并且使用快速排序算法对字符串数组进行排序。
阅读全文