正确版:指针法
void swap(int * pa, int * pb)// void swap(int*pa,int*pb)
{
int z = 0;
z = *pa; //交换的是地址,即数值
*pa = *pb; //*pa访问的就是int a,即20
*pb = z;
}
int main()
{
int a = 10;
int b = 20;
printf("打印前:a=%d b=%d\n", a, b);
swap(&a, &b); // swap(&a,&b)
printf("打印后:a=%d b=%d\n",a,b);
return 0;
}
错误版:
void swap(int x, int y)//重新找变量定义,用xy定义
{
int z = 0; //一个函数什么都不返回且不需要返回时,函数类型为void
z = x;
x = y;
y = z;
}
int main()
{
int a = 10;
int b = 20;
printf("打印前:a=%d b=%d\n", a, b);//("a=%d b=%d\n",a,b);
swap(a, b);//自定义变量swap(a,b)
printf("打印后:a=%d b=%d\n", a, b);
return 0;
}
错误代码!!!!!!!!!!!!!!
因为主函数的a,b有独立空间(字节),,swap函数也有自己的空间(字节), 主函数可以把数值传给swap函数,但是swap一系列操作,只会改变swap
不会改变主函数的数值