C++入门——引用

引用:

        代码可以按照值的方式来实现,最终可以达到指针的效果

#include<iostream>

using namespace std;

int main()
{
	int a = 10;
	int& ra = a;//取别名
	ra = 100;
	cout << a << endl;
	return 0;
}

引用的特性

        1.引用类型必须和引用实体是同种类型的

        2.引用在定义时必须初始化,必须初始化引用

        3.一个变量可以有多个引用

        4.引用一旦引用一个实体,再不能引用其他实体

常引用:const

将const类型的引用称为const引用

const修饰a,表面a是一个常量,常量不允许被修改

const int a =10;
//int& ra =a;  //这样会报错
const int& ra =a; //但是不能通过ra 修改 a

 不想通过ra修改a,就用const类型的引用

int main()
{
    double d=10.12;
    //int& rd = d; //报错:原因类型不同
    const int& rd = d; //会开辟一块新空间
    d=31.41;
    cout<<rd<<endl;
    return 0;
}

结果 ra = 10

         必须加const,编译器发现double和int之间可以发生隐式类型转换,于是重新创建了一块整型的空间,将d中整型部分放到临时空间中了。临时空间在栈上,用户不知道这个空间的名字和地址,所以就不能被修改。

引用的使用场景

1.为了简化代码给复杂的表达式取别名

2.用引用作为函数的形参

3.如果不想通过形参修改外部的实参,则形参可以设置为const类型的引用。

4.用引用作为函数的返回值

int& Add(int left ,int right)
{
    int temp=left+right;
    return temp;
}
int main() 
{
    int& ret=Add(1,2):
    printf("%d\n",ret);
}

 为什么后两次的值没有被修改?

        后序函数调用时候 ,开辟的空间正好在上一次函数调用时的位置,新一次函数调用时,需要将上一个函数调用之后在空间中留下的垃圾数据清理掉,不能返回函数栈上的空间,即返回的实体没有随着函数的结束而销毁,如全局变量、static修饰的变量、堆空间等。

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值