谭浩强《C++面向对象程序设计》中原文:“由于引用不是独立的变量,编译系统不给他单独分配存储单元,因此建立引用只有声明没有定义,只是声明它和原有的某一变量的关系(就是在声明的时候一定要初始化).............引用与其说代表的的变量共享同一内存单元,系统并不为引用另外分配存贮空间。实际上,编译系统使引用和其代表的变量具有相同的地址。”
其实在实际的使用过程中,相信LZ也能体会到这些
还有既然是同一内存地址,可以得到引用本身的地址,比如有:
int a=1;
int &b=a;//声明引用的时候就要初始化
cout<<&a<
举个例子:int a,*p; 我们说变量的引用即:&a; ----->只表示一个地址;这个意思是用去地址符取出这个地址的这操作;p=&a;p本身是个变量,而它存的是a的地址,所以p是指针;
从汇编的角度来看,当使用到一个变量的引用时,编译器就把变量的地址(即引用)直接压入堆栈,函数从堆栈中取出这个地址就可以操作这个变量了。所以说引用不是变量是对的,这只是内存空间的一个地址。
当然可以看到引用的地址,你用
int a=8;
int &b=a;
cout<
就可以看到(我的是这个地址,前面是值 ,后面是地址):
存储在你引用的那个变量里