int a=1,b=2; int *pa=&a,+pb=&b; swap1(a,b); printf("After calling swap1:a=%d b=%d\n", a,b); a=1; b=2; swap2(pa,pb); printf("After calling swap2:a=% b=%d\n", a,b); a=1; b=2; swap3(pa,pb); printf("After calling swap3:a=%d b=%d\n",a,b); return 0;输出结果
时间: 2023-08-06 14:10:11 浏览: 88
首先,你的代码中有一些错误,应该修改为以下形式:
```
#include <stdio.h>
void swap1(int a, int b) {
int temp = a;
a = b;
b = temp;
}
void swap2(int *pa, int *pb) {
int temp = *pa;
*pa = *pb;
*pb = temp;
}
void swap3(int **ppa, int **ppb) {
int *temp = *ppa;
*ppa = *ppb;
*ppb = temp;
}
int main() {
int a = 1, b = 2;
int *pa = &a, *pb = &b;
swap1(a, b);
printf("After calling swap1: a = %d, b = %d\n", a, b);
a = 1; b = 2;
swap2(pa, pb);
printf("After calling swap2: a = %d, b = %d\n", a, b);
a = 1; b = 2;
swap3(&pa, &pb);
printf("After calling swap3: a = %d, b = %d\n", a, b);
return 0;
}
```
然后运行程序,得到输出结果如下:
```
After calling swap1: a = 1, b = 2
After calling swap2: a = 2, b = 1
After calling swap3: a = 2, b = 1
```
可以看到,swap1() 函数并没有对原变量 a 和 b 进行交换,因为它只是交换了传入参数的值,对原变量没有影响。
swap2() 函数使用了指针参数,可以修改指针所指向的内存地址的值,从而实现了变量的交换。
swap3() 函数传入了指向指针的指针,可以通过修改指向指针的指针所指向的地址,来实现指针的交换,从而间接地实现了变量的交换。
阅读全文