C++中函数传值,传引用,传指针的区别

函数的调用就是在内存中开辟一块空间来保存被调函数的临时数据,当被调用函数结束后,该内存就会被释放。
指针其实也是一个变量,只是保存的是一个地址,而变量保存的值。

传值

实参拷贝一份数值给形参,在传递完之后,形参与实参就没有联系了。因此形参在被调用函数中的修改将不会被影响到实参。

传指针

指针的传递与值的传递相差不大,使用拷贝的方式(将数据的地址(指针)拷贝一份给到形参)然后系统会开辟一个空间来保存这个地址,因此可以在被调函数中修改该地址(指针),当指针被修改后指向的就不是实参了。
之所以传指针能修改实参中的值,是因为在传进来的地址(指针)还没有被修改的时候,指向的是实参的值。
在这里插入图片描述
如上图所示,在被调函数中开辟一个空间保存是形参(指针)的拷贝值,因此如果没有修改被调函数保存的地址(指针)01003H的时候,还是可以修改指向的实参(a)的值,但是在被调函数中修改69877H中的地址值后,就不再指向a了,如果再修改指向的值的话就不会修改实参(a)的值。
因此为了保证形参中的指针不被改变,应该在形参列表中添加const比如如下的情况:

void func(int *const a)

传引用

引用:

  • 申明的时候就被定义,而且只能呗定义一次,之后就不能进行修改;
  • 引用就是起别名
    博客中介绍到
    引用的传递可以理解为没有为这个形参开辟空间,因为在函数调用的时候形参的地址空间和实参的地址空间一样,因此在修改形参的时候就是在修改实参的值。
    或者可以理解为在使用引用传递的时候,实参就相当于原函数和被调函数的共享数据(或者静态数据)。
    更详细的解释见
    以上为个人的见解,如有错误欢迎指正!!!!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值