#include <stdio.h> #include <string.h> int x=10,y=20; void swap(int *a,int *b) { printf("%p\t%p\n",a,b); int *tmp=a; a=b; b=tmp; printf("%p\t%p\n",a,b); } int main(void) { printf("%p\t%p\n",&x,&y); swap(&x,&y); int *p=&x; int *q=&y; printf("%d\t%d\n",*p,*q); return 0; } 为什么x,y的值没有交换
时间: 2024-04-08 21:33:34 浏览: 41
string-pailie-c.zip_pailie什么意思_字符串 c语言
在你的swap函数中,你尝试通过交换指针方式来交换x和y的值。但是,在函数中交换指针不会影响到原始的x和y变量。
在swap函数中,你使用了一个临时指针变tmp来进行交换操作。但是,交换只是指针变量a和b的值,并没有改原始变量x和y的值。
为了实现交换x和y的值,你需要通过指针来修改原始变量的值。可以使用间接引用(也称为解引用)操作符 "*" 来修改指针所指向的变量的值。修改后的swap函数应该是这样的:
```c
void swap(int *a, int *b)
{
printf("%p\t%p\n", a, b);
int tmp = *a;
*a = *b;
*b = tmp;
printf("%p\t%p\n", a, b);
}
```
这样,在调用swap函数后,x和y的值将会被成功交换。
阅读全文