若在main里定义了char *x=str1,*y=str2呢
时间: 2024-09-09 19:12:44 浏览: 42
如果在`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`所指向的字符串内容。
阅读全文