BASIS FOR COMPARISONPOINTERREFERENCE定义指针是存着内存地址的变量引用是变量的别名变量地址操作符*, ->&空引用可指向空永远不为空初始化创建不一定初始化创建一定要初始化初始化时期程序运行的任何时间点只能在创建之时初始化赋值根据需要可以多次赋值任何时候都不能再次赋值
- 从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