黑马程序员技术交流社区
标题:
用函数实现两个变量的值交换及常见误区
[打印本页]
作者:
OnTheWay_1314
时间:
2015-12-4 16:11
标题:
用函数实现两个变量的值交换及常见误区
<div class="blockcode"><blockquote>#include <stdio.h>
void swap(int *p1,int *p2);
void swap1(int x,int y);
void swap2(int *p1,int *p2);
int main(int argc, const char * argv[])
{
// 定义变量
int a = 3,b = 4;
int *p1 = &a,*p2 = &b;
swap(p1, p2);
//swap1(3, 4);
//swap2(p1, p2);
printf("a=%d,b=%d\n",a,b);
return 0;
}
void swap(int *p1,int *p2)
{
//注意,正解!
int temp;
temp = *p1;
*p1 = *p2;
*p2 = temp;
}
void swap1(int x,int y)
{
//此处实际上是形参变量x,y的值交换,与实参无关
int temp;
temp = x;
x = y;
y = temp;
}
void swap2(int *p1,int *p2)
{
//相当于形参的地址进行了交换,与实参无关
int *temp;
temp = p1;
p1 = p2;
p2 = temp;
}
复制代码
当当当当,就如上代码所示咯,注释也很清楚,写下来希望自己谨记,也给大家做个参考!
作者:
junjunzhang
时间:
2015-12-5 09:23
是不是可以理解为swap1是表面的值传递,swap2是表面的地址传递,swap是地址里边存储的值的传递
作者:
长厢厮守℡
时间:
2015-12-5 10:34
谨记,我第一次打这个代码,就写成了swap2,
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2