C++的指针和引用

C++的指针和引用

int *p;
int &q = p;

定义

指针存放变量地址,各类型指针大小都为4个字节,在sizeof判断大小时容易错写误判
引用是一个指针的别名

指针和引用的差别

1.引用非空,因为引用声明时必须初始化,同时也意味着不用做类型检查
2.引用不可修改指向其它内存

使用和注意事项

1.函数的参数传递尽量使用引用,因为引用可对指向内容进行改变,但是不用往栈中添加副本从而减小开销
2.重写操作符operate=,operate<<,operate>>时,如果要支持a=b=c,a>>b>>c之类的连等连赋值效果,请对对应结果值使用引用
3.动态内存传递场景必须使用指向指针的指针
4.一个指向数组的指针的具体指向是数组的首地址
5.指针可以和数字加减操作,效果是当前指向地址前后(-+)移动n乘以指针指向类型的地址距离
6.指针分配内存操作new,molloc之后,不使用时必须delete或free释放,数组指针释放时采用delete []的方式
7.指针如果为局部变量最好在作用域结束前释放,如果类的成员变量最好在析构函数中释放
8.在释放指针后,最好是把指针置为NULL,不然会产生迷途指针或者叫悬浮指针,因为delete只会让编译器把指针指向的内存释放,之后指针依然存在,并且会指向一个不确定的非法位置
9.如果指针变量跨作用域、调用复杂或释放内存代码区域有异常风险最好使用智能指针

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值