改变指针指向的地址为什么需要二维指针,从汇编角度分析

本文通过一个交换指针地址的例子,深入探讨了为什么在C语言中,使用二维指针才能有效地交换变量的地址。通过分析汇编代码和使用GDB调试,揭示了在函数调用中,直接修改指针变量与修改指针的指针变量之间的区别,阐述了二维指针在传递和修改内存地址时的关键作用。
摘要由CSDN通过智能技术生成

教科书上面有个比较经典的交换数字的问题。

如果以下面的 A表达式

int swap(int a, intb);

那么结果是a/b不能互换

如果想要达到a/b互换的小姑,只能以B的形式

int swap(int *a, int *b);

老师就老是告诉我们,因为这个时候需要传入指针,才会有效。一直以来都是在懵懂之间,知其然而不知其所以然。

今天忽然想到,于是打算从汇编的角度分析这个问题。

选的例子有点不同,看下面的代码: 

这段程序运行后打印的结果是 b,b

这个说明了pa交换成功了而对pb的赋值实质上是没有影响到调用test函数的实参的。

 

这个中间是为什么呢?

 

在调用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值