#include <stdio.h>
int a = 10;
int b = 88;
void swap1(int a, int b)
{
int t;
t = a;
a = b;
b = t;
}
void swap2(int *a, int *b)
{
int t;
t = *a;
*a = *b;
*b = t;
}
int main(int argc, char *argv[])
{
swap1(a, b);
printf("after swap1: a=%d, b=%d\n", a, b);
swap2(&a, &b);
printf("after swap2: a=%d, b=%d\n", a, b);
return 0;
}
运行结果如下:
分析:
调用swap1()时,相当于执行swap1(10, 88),仅仅是传了两个常量给函数,并不会影响到全局变量a和b的值;
而调用swap2()时,把全局变量a和b的地址传给函数,函数结束的时候将a地址处的值和b地址处的值交换了。