C++中的引用

1.引用的概念
引用的本质是指针。
变量名,本身就是一段内存的引用,即别名(alias)。此处引入的引用,是为已有变量起一个别名。
声明如下:

int main(){
    int a;
    int &b = a;
}

1.1.规则
1.1.1.引用没有定义,类型和原类型一致,且不分配内存,与被引用的变量有相同的地址。
1.1.2.声明的时候必须初始化,一经声明不得变更。
1.1.3.可对引用再次引用,多次引用的结果,是某一个变量的别名。
1.1.4.&符号前有数据类型是是引用,其它皆是取地址。

int main(){
    int a,b;
    int &r = a;//必须初始化。
    int &r = b;//错误,不能更改原有的引用关系。
    float &rr = b;//错误,引用类型不匹配。
    cout << &a << &r << endl;//变量与引用具有相同的地址。
    int &ra = r;//可对引用多次引用。表示变量a有两个别名,分别是ra和r。
}

1.2.引用的应用
C++很少使用独立变量的引用,如果使用某一个变量,就直接使用它的原名,没必要使用它的别名就引用。

值作函数参数:
    void swap(int a,int b);//无法实现两数据的交换。
    void swap(int *a,int *b);//开辟了两个指针空间实现交换。
引用作函数参数:
void swap(int &a,int &b)//可以用引用解决的问题尽量避免用指针来解决。

1.3.引用的提高
引用的本质是指针,C++对裸露的内存地址(指针)做了一次包装。
1.3.1.可以定义指针的引用,但不能定义引用的引用。

int a;
int *p = &a;
int * &rp = p;//ok.
int & r = a;
int && rr = r;//错误,**对引用取地址,建立引用的指针没有意义**,所以不能定义引用的引用。

1.4.常引用(const)
const 引用使用的比较多。它可以防止对象的值被随意修改。
(1)const对象的引用必须是const的,将普通引用绑定到const对象时不合适的(因为const是不能被修改的)。
(2)const引用可使用相关类型的对象(常量,非同类型的变量或表达式)初始化。

const int &a = 2;const int &b = a;都是合法的。
int i = 5;
const int &j = i+5;//输出i = 5,j = 10;

1.5.尽量使用const可避免无意修改数据的编程错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值