引用可以看作一个常量指针,如:
int a=10;
int &b=a;
const int *c=&a
上面两句的含义差不多。
对于简单应用,从低层的实现来看是一样的:
int a=10;
int *b=&a;
生成这样的代码
mov [ebp],10
lea eax,[ebp]
mov [ebp-10],eax
引用:
int a=10;
int &b=a;
生成同样的代码
mov [ebp],10
lea eax,[ebp]
mov [ebp-10],eax
但是在进行参数传递时就出现了不一样。
下面拷贝了关于函数传递指针和引用的讨论中一段内容,实在懒得写了,楼主凑合看吧。
参数传递指针时将直接对指针指向的地址进行操作
传递指针的引用时,通过间接寻址,来实现对〔指针指向的地址〕进行操作。
看看下面一段程序反汇编后的内容就很清楚了
引用是C++提出来的概念,在C中没有这一概念
你所说的是叫 指针的引用,写法
char * myp = new char[20];
char * &rpc = myp;
引用的方便之处,在于它是一个别名,不是变量,不占内存