引用与指针的区别总结

1) 引用是一个变量的别名

       int n = 10;

       int &m = n;

       r = 20;     //此时n = 20

2) 引用必须在声明的同时初始化

       int *p;

       p = &n;     //ok

       -----------------------------

       int &m;     //error

       m = n;      //error

       -----------------------------

       int &m = n;   //ok

3) 引用的唯一性(引用一旦初始化,就不能在成为另一个变量的引用)

       int n = 10;

       int& m = n;

       int a = 20;

       m = a;              //出问题了,虽然不报错,此步骤相当于让 把 a 的值赋值给了 n ,所以结果为 n == 20

       m = 30             //此时 a == 20, 而不是 a == 30, 此时 n == 30, 所以 m 并没有成为 n 的引用

4) 不能有空引用 

       int *p = NULL;

       int &m = NULL;     //error (既然引用就是别名,那就和人一样,得有个人才能别一个名儿出来)

5) 不能声明引用型数组

       char* pn[2];

       char& m[2] = {a, b};          //error, 引用数组没有分配空间,无法保存元素地址,所以不存在引用数组

6) 一般引用不能应用常量,引用常量要用常引用

       int &m = 10;                   //error

       const int &m = 10;         //OK

       r = 20;                            //error

       --------------------------------------------

 

          

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值