C++引用详解

C++引用

define:引用就是变量的一个别名。一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量,标识符为 & .

引用的优点:

引用传递相比较于值传递没有进行值拷贝操作,因此提高了程序的运行效率;同时引用传递相比较于指针传递要简单,易于理解,而且可以提高程序的执行效率,在许多情况下能代替指针的操作。

引用的声明方法

[类型标识符] &[引用名]=[目标变量名]
eg:int x;int &rx=x; //声明变量x的引用rx

注意

1.&在此不是求地址运算,而是起标识作用。

2.引用在声明时就必须对它进行初始化
引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,且不能再把该引用名作为其他变量名的别名。ra=1;等价于 a=1;

3.引用本身不是一种数据类型,因此引用本身不占存储单元,系统也不给引用分配存储单元。故:对引用求地址,就是对目标变量求地址。&ra与&a相等。

4.不能为数组建立引用,因为数组是由若干个元素组成,所以不能建立数组的别名。

5.不能建立void类型的引用(任何实际存在的变量都是属于非void类型的,void的含义是无类型或空类型,void只是在语法上相当于一个类型而已。

6.可以建立指针变量的引用,但是不能建立指向引用的指针(引用不是一种独立的数据类型)

int a=2;
int *p=&a;
int *rp=p;     //rp是一个指向整型变量的指针变量的引用,初始化为p

7.常引用
可以用const对引用加以限制,常引用声明方式:

const 类型标识符 & 引用名=目标变量名;

用这种方式声明的引用,不能通过引用对目标变量的值进行修改,从而使引用的目标成为const,达到了引用的安全性。

int a=3;
cosnt int &ra=a;
ra=1;       //错误,不能通过对const引用的目标变量进行值修改
a=1;        //正确,a是普通变量,通过变量名修改是合法的

8.可以用常量或表达式对引用进行初始化,但此时必须用const作声明

int a=3;
const int &b=a+3;

编译器将此代码块理解为:

int temp=a+3;
const int &b = temp;

9.引用作为函数返回值

#include<iostream>
using namespace std;
int &Max(int &x,int &y)
{
    return(x>y)?x:y;
}
int main()
{
    int a = 2,b=3;
    cout<<"a="<<a<<" b="<<b<<endl;
    Max(a,b)=4; //函数返回两个参数中的大数本身,故此处为b赋值
    cout<<"a="<<a<<" b="<<b<<endl;
    return 0;
}

程序运行结果如下:
a=2 b=3
a=2 b=4
定义返回引用的函数时,注意不要返回对该函数内的自动变量的引用。否则,因为自动变量的生存期仅局限于函数内部,当函数返回时,自动变量就消失了,函数就会返回一个无效的引用。

函数返回的引用是对某一个函数参数的引用,而且这个参数本身也是引用类型,这样才能保证函数返回的引用由意义。

你可以期待太阳从东方升起,而风却随心所欲地从四面八方吹来。 ----萨特

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值