void swap(char **str1,char **str2)
时间: 2023-12-18 16:29:06 浏览: 181
这是一个C语言程序,其中定义了一个名为swap的函数,函数的参数是两个指向字符指针的指针。函数的作用是交换这两个指针所指向的字符串。具体实现如下:
```c
void swap(char **str1,char **str2) {
char **tmp = str1;
*str1 = *str2;
*str2 = *tmp;
}
```
在main函数中,定义了两个字符串指针str1和str2,并分别指向"hello word"和"word hello"这两个字符串。然后调用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` 函数比较两个字符串的大小,并且使用快速排序算法对字符串数组进行排序。
若在main里定义了char *x=str1,*y=str2呢
如果在`main`函数内部定义了`char *x = str1`和`char *y = str2`,这实际上创建了两个指向字符串常量的指针,它们分别指向`str1`和`str2`数组的第一个字符。但是,这样的声明并没有改变字符串本身,它不会像之前的例子那样允许直接交换字符串内容。
如果你想通过指针间接交换这两个字符串,你可以稍微修改一下`swap`函数,让它接受`char **`作为参数,代表指向字符串首地址的指针:
```c
void swap(char** a, char** b) {
char* temp = *a; // 获取第一个字符串的地址
*a = *b; // 将a指向b的内容
*b = temp; // 将b指向原来的a的内容
}
// 在main里使用
int main() {
char str1[] = "Hello";
char str2[] = "World";
char* x = str1;
char* y = str2;
printf("Before swapping:\n");
printf("%s %s\n", str1, str2);
swap(&x, &y); // 调用swap并传递指针地址
printf("\nAfter swapping:\n");
printf("%s %s\n", str1, str2);
return 0;
}
```
现在,`swap`函数会交换`x`和`y`所指向的字符串内容。
阅读全文