C++的指针和引用

来源:互联网 发布:python 分词 相似度 编辑:程序博客网 时间:2024/06/05 08:24

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.如果指针变量跨作用域、调用复杂或释放内存代码区域有异常风险最好使用智能指针

原创粉丝点击