中易网

C语言指针地址传递

答案:2  悬赏:10  
解决时间 2021-03-14 01:17
Exchg2(int *px, int *py)
{
int tmp=*px;
*px=*py;
*py=tmp;
print("*px=%d,*py=%d\n",*px,*py);
}
main()
{
int a=4;
int b=6;
Exchg2(&a,&b);
Print("a=%d,b=%d\n", a, b);
}

哪位大大分析一下,小弟初学,这个*px和*py是表示的a,b,的地址,为什么*px和*py的值交换之后a,b的地址也被交换了??
最佳答案
首先你要清楚一个点,这里的a,b都是变量名称,举个例子在地址0x0000FFFF处存了一个int型的变量为10,为了方便程序员使用,我们给他命名为a,那么我们在用a的时候其实就是在用那个地址为0x0000FFFF处的变量。
好了回到这里,*py和*px表示的是指针,py和px才是地址。假设a的地址是0x0000FFFF,该地址所存的内容为10,那么这里的px也是-X0000FFFF,而*px表示该地址所存的内容,也就是10.。那么可以很好理解这里其实不是交换地址,而是交换值。
全部回答
c语言中指针即地址,地址的传值可以引起参数的变化。 比如: &x, &y是取这两个变量的地址,他们的作用空间在main函数里。然后函数调用把这两个变量的地址传递到函数myadd中,在函数中的*a和*b分别是引用地址指向的变量值,等于是取到了x,y本身的值。在myadd中直接操作*a可以改变x的值。 通俗来说因为&x,&y表示的是x,y的地址。所以传递的是地址。意思就是说,函数可以通过地址引用变量。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
广告牌喷哙是图片一层一层喷上去还是只喷图片
恋人心是花千骨里的歌曲吗
金凯公寓南门我想知道这个在什么地方
信用卡发迟缴通知函是什么后果?需要怎么做,
天天少儿舞蹈学校地址在什么地方,想过去办事
我儿子是2016年6月22日20点25分出生,起什么名
有人在吗?微信上有个漂流瓶,不好玩啊,我想
找一篇体现父爱的文章
一正方体质量为6kg,边长为10cm,放置在水平
怎么通过书中的一两句话去找这本书
去派出所改名字需要多久?
三星手机上打开微信时会跳到计祘器界面
西和县个体劳动者协会怎么去啊,有知道地址的
农村鼠害防治的最佳时期是什么时间
周公解梦梦见在深山遇见陌生老头
推荐资讯
岩岩商店地址有知道的么?有点事想过去
电瓶车跑不起来 速度拉高就一冲一冲的
去vivo手机售后服务中心修手机没有维修卡和购
古天乐版神雕侠侣香港版为什么剪切了
请问有人买过音乐人网的Alay编曲教程吗?效果
我背后纹了个关公请问有啥讲究吗
深圳哪有卖墙纸的???
这是个基于51单片机做出来的时钟,显示秒和毫
锦翠苑(东北门)怎么去啊,有知道地址的么
活龙坪乡拱桥村中心卫生室我想知道这个在什么
如何知道女人怀过孕?
会考的成绩会参与进升学的考察中吗?初中生物
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?