BASIS FOR COMPARISON | POINTER | REFERENCE |
---|---|---|
定义 | 指针是存着内存地址的变量 | 引用是变量的别名变量地址 |
操作符 | *, -> | & |
空引用 | 可指向空 | 永远不为空 |
初始化 | 创建不一定初始化 | 创建一定要初始化 |
初始化时期 | 程序运行的任何时间点 | 只能在创建之时初始化 |
赋值 | 根据需要可以多次赋值 | 任何时候都不能再次赋值 |
- 从CPU角度看引用和指针,其实两者并没有什么区别。也就是说引用是底层实现还是指针;
- 从top-level、low-level看指针。引用其实是一个受限的指针,因为它会自带top-level属性,你不能改变reference的指向;
- 从用法上看。引用更加简洁,但是指针更加灵活;
- 从语法支持程度来说。指针既可以用在C也可以用在C++,引用只能用在C++;
那么在指针和引用中该如何选择?
- 如果你需要用到指针的++运算符或者不得不传递空指针,那么请用指针,其他则用引用;
- 参考你们团队的编码风格
[1] https://stackoverflow.com/questions/114180/pointer-vs-reference
[2] https://www.zhihu.com/question/31276547/answer/2187158984