引用与指针小结

引用与指针小结
1、引用在创建的时候就必须被初始化, 即引用到一个对象; 指针在定义的时候不必初始化, 可以在之后根据自己的需要初始化。

2、没有空引用, 指针可以赋值为NULL, 而引用是不可以的,引用必须与合法的存储单元关联。

3、引用一旦被初始化指向(绑定)某个对象后, 它就不可以再被改变指向另一个对象。 而指针在没有经过const修饰的时候, 是可以随时指向另一个对象的。


int a = 0;
int b = 2;
int& c = a; //创建引用 c, 指向 a
c = b; //这时候 c 还是指向 a, 只是 a 的值是 2。 这句等同于 a = b;
如果是指针的话:

int a = 0;     //假定 a 的地址为 0x4ea532
int b = 2;     //假定 b 的地址为 0x4ea552
int* c = &a;   //c 指向变量a  *c 的值为0
*c = b;        //c 指向变量a  *c 的值为2
a = 9;
c = &b;        //c 指向变量 b, a 的值为9, b 的值为 2  
引用与指针在语言层面属于不同的两个东西。某种程度上来说, 对他们进行比较并没有什么意义, 如果一定要作比较的话, 还可以从下面的几个方面进行阐述。
 
4、指针可以进行算术运算(指向的内存地址的偏移操作), 引用的算术运算, 取决于指向对象所属类的算术运算定义, 如果该对象所属类没有定义相关操作就无法完成。

5、存在多级指针, 不存在多级引用,  对多次定义、 赋值只是为原对象创建了多个别名。

6、用sizeof运算符对指针进行求大小得到的是指针本身的大小(32位编译器四字节、 64位编译器8字节), 而引用得到的是对象大小

值得注意的是: 引用的创建和销毁并不会调用类的拷贝构造和析构函数, 这点和指针是一样的。

引用的主要价值是用来修饰函数的形参和返回值。

在C++中, 函数的参数和返回值的传递方式有三种: 值传递(会调用类的拷贝构造)、 指针传递(不会调用拷贝构造)及引用传递(不会调用类的拷贝构造)。 引用的好处在于, 既有指针传递的效率, 也有变量使用的方便和直观。




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值