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);