引用和指针
观察下面一段代码和它的反汇编
#include<stdlib.h> #include<stdio.h> void Fun1(int& x) { x = 2; } void Fun2(int* x) { *x = 2; } int main() { int a = 1; Fun1(a); Fun2(&a); return 0; }

无论是通过引用传递还是通过指针传递,他们的反汇编都差不多是一样的:将数据的地址压入栈中,来让函数能够通过地址来访问数据,进行修改。
根据我的理解,引用和指针在底层本质上相似,而在使用时却可以像基本类型那样使用。
指针所存储的地址可以随意修改,可能会造成不好的结果,而引用有着和指针相似的功能,但编译器不允许你通过引用来修改之前所传递的地址,所以引用是一种更为安全的选择。

浙公网安备 33010602011771号