void swap1(int x, int y)//void是空或者是无的意思,无返回值

{

int tmp = 0;

tmp = x;

x = y;

y = tmp;

}



void swap2(int* pa, int* pb)//void是空或者是无的意思,无返回值

{

int tmp = 0;

tmp = *pa;//把pa所产生的值赋给tmp

*pa = *pb;

*pb = tmp;

}


int main()

{

如果需要改变函数外部变量,则要考虑传址调用

int a = 10;

int b = 20;

printf("a=%d b=%d\n", a, b);

swap1(a, b);//传值调用

printf("a=%d b=%d\n", a, b);//此时不能交换a,b,交换的是x,y的值

//x,y和a,b数据存放不同的地址

return 0;//不能改变a的地址



int a = 10;

int*pa = &a;//指针变量,pa里存的是a的地址

*pa = 20;//解引用操作符,相当于*pa=a的值 通过pa里存的地址,找到他所产生的地址

printf("%d\n", a);


int a = 10;

int b = 20;

swap2(&a, &b);//传址调用,有确切的数是实参,不是形参,形参是实参的零时拷贝

//对形参的修改是不会改变实参的,如(swap1)

printf("a=%d b=%d\n", a, b);