c++引用调用

目录

1:什么是引用

2:函数的参数传递

3:传递对象

4:总结


1:什么是引用

引用就是别名,如:int &rnum = num;

rnum 是整型变量 num 的别名,这样,对 rnum 的操作实际就是对 num 的操作。

&rnum的值&num的值(地址)是一样。

注意:定义引用时一定要同时对该引用进行初始化,如:

int a;

int &b = a;

而不能写成

int a;

int &b;

b = a;

这样是错误的。引用就如同常量,只能对其初始化,不能赋值


2:函数的参数传递

1:按值传递

2:指针传递

3:引用传递

void fun(int &aa,int &bb)

{
    int c;
    cout<<"fun:交换前,a = "<<aa<<", b = "<<bb<<endl;
    c = aa;
    aa = bb;
    bb = c;
    cout<<"fun:交换后,a = "<<aa<<", b = "<<bb<<endl;
}


int main()

{
    int a=3,b=4;
    cout<<"main:交换前,a = "<<a<<", b = "<<b<<endl;
    fun(a,b);
    cout<<"main:交换后,a = "<<a<<", b = "<<b<<endl;

    return 0;
}

它类似于指针的传递方式,仅仅是将 a 和 b 的内存地址以直接引用的方式传递到函

数体中,因此不会复制 a 和 b 的数据到栈中,这样在函数内的操作就是对 a 和 b 的别名 aa 和bb 的操作,我们知道对象的别名与其内存地址相同,因此对 aa 和 bb 的操作就是对 a 和 b 的操作

注意:

指针是间接访问,比如它要用*来读取*后面地址处的数据,而引用则是直接访问,它是某个对象的别名,因此不用任何符号就可以直接读取该对象的数据。因此将指针作为函数的接收参数是间接引用方式来接收参数,而将别名作为函数的接收参数是以直接引用方式来接收参数。


3:传递对象

1:通过值传递对象

按值传递在向函数传递一个对象时,会像传递变量那样建立一个该对象的拷贝,而从函数返回一个对象时,也要建立这个被返回的对象的一个拷贝。(浪费)

2:通过指针传递对象

传递的对象的地址,不用建立一个新的对象的拷贝,节省了资源

3:用const指针传递对象

这样可以保证该函数接收和返回的对象是不可修改的,同时因为传递的地址,同样节省了资源

4:通过引用传递对象

由于引用不能重新分配去引用另一个对象,它始终是常量,因此我们不用将它设置为常量。(既节省资源,又保证了不可修改)


4:总结

在函数中按地址返回一个栈中对象时,由于该对象是从函数中创建的,函数返回后,该函数的栈中对象也被销毁了,因此不要对这个不存在的对象进行任何操作。

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值