c++里的 引用 存储在哪里?

有资料说,引用不是变量,系统不给分配存储空间;也有的指出引用是常数指针,占的空间按指针算。
高人给讲解一下,到底怎么看待引用?能得到引用本身的地址吗?

谭浩强《C++面向对象程序设计》中原文:“由于引用不是独立的变量,编译系统不给他单独分配存储单元,因此建立引用只有声明没有定义,只是声明它和原有的某一变量的关系(就是在声明的时候一定要初始化).............引用与其说代表的的变量共享同一内存单元,系统并不为引用另外分配存贮空间。实际上,编译系统使引用和其代表的变量具有相同的地址。”

其实在实际的使用过程中,相信LZ也能体会到这些
还有既然是同一内存地址,可以得到引用本身的地址,比如有:
int a=1;
int &b=a;//声明引用的时候就要初始化
cout<<&a<<endl<<&b;//两个值是一样的
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-05-04
举个例子:int a,*p; 我们说变量的引用即:&a; ----->只表示一个地址;这个意思是用去地址符取出这个地址的这操作;p=&a;p本身是个变量,而它存的是a的地址,所以p是指针;
第2个回答  2011-05-04
从汇编的角度来看,当使用到一个变量的引用时,编译器就把变量的地址(即引用)直接压入堆栈,函数从堆栈中取出这个地址就可以操作这个变量了。所以说引用不是变量是对的,这只是内存空间的一个地址。本回答被提问者采纳
第3个回答  2011-05-04

当然可以看到引用的地址,你用

int a=8;

int &b=a;

cout<<b<<"   "<<&b;

就可以看到(我的是这个地址,前面是值 ,后面是地址):

追问

你试试&a

第4个回答  2011-05-04
存储在你引用的那个变量里

c++里的 引用 存储在哪里?
谭浩强《C++面向对象程序设计》中原文:“由于引用不是独立的变量,编译系统不给他单独分配存储单元,因此建立引用只有声明没有定义,只是声明它和原有的某一变量的关系(就是在声明的时候一定要初始化)...引用与其说代表的的变量共享同一内存单元,系统并不为引用另外分配存贮空间。实际上,编译系统使引用...

自引用类是什么?
int a;int &b=a;这就表明了b是a的“引用”,即a的别名。经过这样的声明,使用a或b的作用相同,都代表同一变量。在上述引用中,&是“引用声明符”,并不代表地址。不要理解为“把a的值赋给b的地址”。引用类型的数据存储在内存的堆中,而内存单元中只存放堆中对象的地址。声明引用并不开辟内存...

C++中各种数据成员,对象,函数等它们分别是存储在哪里的呢?它们的生存期...
存储在哪里 -- 现代计算机都用虚拟存储,即使是exe文件,也并不同时映射和装入到RAM中去,类用到的动态链接库,在共享区(如果已有别的进程用了)或新分配到共享区(如果没有别的进程用,而是你的程序第一个使用,则新分)。

c语言问题,什么叫引用啊?
引用(reference)是c++对c语言的重要扩充。一、引用的概念 引用引入了对象的一个同义词。定义引用的表示方法与定义指针相似,只是用&代替了*。例如: Point pt1(10,10);Point &pt2=pt1; 定义了pt2为pt1的引用。通过这样的定义,pt1和pt2表示同一对象。需要特别强调的是引用并不产生对象的副本,...

引用类型引用类型 (reference type)
cppint &b = a;这表明b是a的引用,意味着b实际上是a的别名。使用b时,实际上是操作a,因为它们代表的是同一个内存位置。在上面的代码中,&是引用声明符,它并不表示地址。误解引用的一个常见误区是认为它是将a的值赋给b的地址。实际上,引用并不存储值,而是存储对堆中对象地址的引用。引用的...

c++中const定义的变量或函数存储在哪里?
编译后,存储在exe文件中。

C++中指针与引用的区别
指针与引用在C++中的区别,主要体现在定义与性质、操作特性及应用场景上。首先,指针与引用在定义与性质上存在显著差异。指针是一个变量,用于存储内存地址,指向特定存储单元;而引用则是一个名字,与原始变量共享同一存储单元,本质上是原始变量的别名。例如,假设我们定义了一个整型变量a,指针p存储a的...

C++中引用与指针的区别
int a = 1;int *p = &a; \/\/ 指针p存储了变量a的地址 int &b = a; \/\/ 引用b是变量a的别名 ```- 存在const指针,但const引用是不允许的。- 指针可以有多个级联,例如`int **p;`是合法的,但`int &&a`是非法的,因为引用只能有一个级别。- 指针可以赋予空值(nullptr),而引用在定义...

C++ & QT ---05(内存、指针、引用、函数高级)
栈区由编译器自动分配和释放,用于存储函数参数值、局部变量等,确保这些数据在函数结束时自动释放。堆区则是由程序员手动分配和释放的空间,用于动态内存管理,主要通过new和delete操作符使用。新操作符(new)用于在堆区开辟数据,所创建的数据会返回指向该数据的指针。引用是C++中提供的一种便捷的方式来...

C++中引用与指针的区别?硬件工程师必看
在C++编程中,引用与指针虽然都能访问内存中的变量,但它们在概念和使用上存在显著差异。本文将对两者的主要区别进行详细阐述。首先,引用是变量的别名,通过&符号定义,如int &a = b,表示a和b共享同一内存地址。而指针则是存储变量地址的变量,用*标识,如int *p = &a,p指向a的内存位置。引用在...

相似回答