黑马程序员技术交流社区
标题:
请问c语言中指针是如何交换两个变量的值
[打印本页]
作者:
lucky24
时间:
2015-8-13 17:46
标题:
请问c语言中指针是如何交换两个变量的值
#include<stdio.h>
void swap(int * a,int *b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}
void main()
{
int a=2,b=3;
swap(a,b);
printf("a=%d, b=%d",a,b);
}
老师是这样讲的 不过还是不太懂
作者:
tangbinbin
时间:
2015-8-19 10:28
swap(a,b)调用函数,表示将a于b的地址传给指针变量a和b,即a=&a,b=&b。函数里面为交换两个指针变量指向的内存单元的内容的值!!
作者:
tangbinbin
时间:
2015-8-19 10:30
这样说不知道你能否听懂
作者:
aidan
时间:
2015-8-19 13:52
首先定义了a,b两个变量
系统会给a,b分别分配2个空间
设a的地址是0x01,b的地址是0x02
这时候把a,b的地址分别赋给两个指针变量a,b(注意是指针变量int *a,*b)
那么指针变量a就指向了0x01,b指向0x02
在swap函数里面,*a,*b就相当于取0x01和0x02两个地址中保存的数值
这里直接用地址操作,交换了0x01和0x02两个地址中保存的数值
最后,变量a的地址依旧是0x01,b的地址依旧是0x02,没有改变,但是地址中保存的值被改变了
所以实现了两个变量之间的交换
作者:
GodLovenan
时间:
2015-8-19 16:36
这个是地址传递,不是值传递
作者:
神马都是浮云
时间:
2015-8-19 16:53
tangbinbin 发表于 2015-8-19 10:28
swap(a,b)调用函数,表示将a于b的地址传给指针变量a和b,即a=&a,b=&b。函数里面为交换两个指针变量指向 ...
兄弟,调用函数是这样的吧swap(&a,&b)
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2