A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

#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);
}
老师是这样讲的 不过还是不太懂

5 个回复

正序浏览
tangbinbin 发表于 2015-8-19 10:28
swap(a,b)调用函数,表示将a于b的地址传给指针变量a和b,即a=&a,b=&b。函数里面为交换两个指针变量指向 ...

兄弟,调用函数是这样的吧swap(&a,&b)
回复 使用道具 举报
这个是地址传递,不是值传递
回复 使用道具 举报
首先定义了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,没有改变,但是地址中保存的值被改变了
所以实现了两个变量之间的交换
回复 使用道具 举报
这样说不知道你能否听懂
回复 使用道具 举报
swap(a,b)调用函数,表示将a于b的地址传给指针变量a和b,即a=&a,b=&b。函数里面为交换两个指针变量指向的内存单元的内容的值!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马