传值or传址

在我们学习C语言时,总是会有这样的疑问?到底是传值还是传址呢,其实这个问题并不难解决,我们用具体实例来解决,看看我的理解思路吧。
传值:形参是实参的一份拷贝,如果在函数中对形参进行修改,不会影响外部的实参。
例:
在这里插入图片描述
(这样做只是在swap函数中进行交换,而外部的实参并没有发生改变)
传址:如果在函数中对形参的指向进行了修改,则会改变外部的实参
例:
在这里插入图片描述
(此时,left指向a,right指向b;*left代表a,*right代表b,修改的是指针指向空间中的内容)
二级指针的用法:
如果按照地址方式传参,在函数体中修改了指针指向空间中的内容,该修改可以体现在外部实参上,若在函数体中修改了指针的指向,该修改不会体现在外部。
例:
在这里插入图片描述
(外部实参这时候本身就是指针,在函数中修改了left和right的指向,修改结构不会体现在外部,此时left和right是外部实参的一份拷贝)
在这里插入图片描述
(此时left是一个指针指向pa,right指向pb,修改指针指向空间中的内容可以体现在外部实参上)

总结:
1:不论按照什么方式传参,将来形参都是实参的一份拷贝。
2:如果在函数体中想要通过修改形参来改变外部的实参,则必须传递实参的地址。
a:如果实参是变量,则传递变量的地址,即传递一级指针
实参:变量——————形参:一级指针
b:如果实参是指针,则传递指针的地址,即传递二级指针。
实参:指针——————形参:二级指针

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值