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的地址也被交换了??
C语言指针地址传递
答案:2 悬赏:10
解决时间 2021-03-14 01:17
- 提问者网友:年齡太小℡蘿莉
- 2021-03-13 17:16
最佳答案
- 二级知识专家网友:短发女王川岛琦
- 2021-03-13 18:47
首先你要清楚一个点,这里的a,b都是变量名称,举个例子在地址0x0000FFFF处存了一个int型的变量为10,为了方便程序员使用,我们给他命名为a,那么我们在用a的时候其实就是在用那个地址为0x0000FFFF处的变量。
好了回到这里,*py和*px表示的是指针,py和px才是地址。假设a的地址是0x0000FFFF,该地址所存的内容为10,那么这里的px也是-X0000FFFF,而*px表示该地址所存的内容,也就是10.。那么可以很好理解这里其实不是交换地址,而是交换值。
好了回到这里,*py和*px表示的是指针,py和px才是地址。假设a的地址是0x0000FFFF,该地址所存的内容为10,那么这里的px也是-X0000FFFF,而*px表示该地址所存的内容,也就是10.。那么可以很好理解这里其实不是交换地址,而是交换值。
全部回答
- 1楼网友:懂得ㄋ、沉默
- 2021-03-13 19:57
c语言中指针即地址,地址的传值可以引起参数的变化。
比如:
&x, &y是取这两个变量的地址,他们的作用空间在main函数里。然后函数调用把这两个变量的地址传递到函数myadd中,在函数中的*a和*b分别是引用地址指向的变量值,等于是取到了x,y本身的值。在myadd中直接操作*a可以改变x的值。
通俗来说因为&x,&y表示的是x,y的地址。所以传递的是地址。意思就是说,函数可以通过地址引用变量。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯