关于C++引用的问题

die_angle 2009-04-18 12:42:29
在C++函数中:
void fun(int &x){}
在函数执行到这个函数的时候,到底有没有给x分配空间,如果分配了那么这个空间里存的是什么?
这个问题我思考了很久了,希望您们能给我一个具体一点的答案。

感谢各位了!!!!!
...全文
351 39 打赏 收藏 转发到动态 举报
写回复
用AI写文章
39 条回复
切换为时间正序
请发表友善的回复…
发表回复
dir541541 2009-04-20
  • 打赏
  • 举报
回复
[Quote=引用 36 楼 wangzelong07 的回复:]
引用实际就是传递内存地址,不用额外空间
[/Quote]
up
wangzelong07 2009-04-19
  • 打赏
  • 举报
回复
引用实际就是传递内存地址,不用额外空间
elated 2009-04-19
  • 打赏
  • 举报
回复

#include <iostream>
using namespace std;
int main()
{
int x=8;
int & n =x;
cout<<&x-&n<<endl;
}

输出为0,x,n为同一个内存地址
CoolChina 2009-04-19
  • 打赏
  • 举报
回复
这里的引用类似与一个指针,在这和处理指针应该是一样的。
vbcpascal 2009-04-19
  • 打赏
  • 举报
回复
都给说完了.
liao05050075 2009-04-18
  • 打赏
  • 举报
回复
其实,你把那当作简化了的指针来理解就好理解了
gxw145 2009-04-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 pengzhixi 的回复:]
LZ是想说有没有为引用分配内存空间吧。在编译器的实现里面是有为引用分配内存空间的,但是你没办法获得这个内存空间的地址。有的编译器把引用的实现弱化为const指针
象你这里int&x 在有些编译器里面可能实现为int *const p.但是从引用的概念来说,引用本身是不分配内存的,所以在外面你输出引用的地址实际上获得的是变量的地址。
[/Quote]
论坛里的引用也有分配空间吧!所以我觉得应该是有分配空间了的。别名?那别名存在哪了呢?这就需要空间吧!!
zgjxwl 2009-04-18
  • 打赏
  • 举报
回复
引用是否分配内存空间?
http://topic.csdn.net/u/20071201/19/1739C182-94B3-4BC6-9013-5CA1F498C749.html

一开始偶也很疑虑。。当时是看这个帖子的。
zgjxwl 2009-04-18
  • 打赏
  • 举报
回复
上面那个帖子里有说明的吧。。
hityct1 2009-04-18
  • 打赏
  • 举报
回复
fun(int x) 会复制一个副本。
fun(int &x)不复制副本。
引用可理解为“别名”
die_angle 2009-04-18
  • 打赏
  • 举报
回复
[Quote=引用楼主 die_angle 的帖子:]
在C++函数中:
void fun(int &x){}
在函数执行到这个函数的时候,到底有没有给x分配空间,如果分配了那么这个空间里存的是什么?
这个问题我思考了很久了,希望您们能给我一个具体一点的答案。

感谢各位了!!!!!
[/Quote]


诸位最好能用程序或文字证明一个自己的观点!!!!(无它,就想知道您凭啥说您是正确的
zgjxwl 2009-04-18
  • 打赏
  • 举报
回复
上面说的,引用是被弱化了的指针。。。这句话说的很不错。
pengzhixi 2009-04-18
  • 打赏
  • 举报
回复
LZ是想说有没有为引用分配内存空间吧。在编译器的实现里面是有为引用分配内存空间的,但是你没办法获得这个内存空间的地址。有的编译器把引用的实现弱化为const指针
象你这里int&x 在有些编译器里面可能实现为int *const p.但是从引用的概念来说,引用本身是不分配内存的,所以在外面你输出引用的地址实际上获得的是变量的地址。
qq675927952 2009-04-18
  • 打赏
  • 举报
回复
引用是不分配空间的,就是一个别名,不信你可以调试看看。。。
zhaonan_1 2009-04-18
  • 打赏
  • 举报
回复
fun(int x) 会复制一个副本。
fun(int &x)不复制副本。
引用可理解为“别名”
pengzhixi 2009-04-18
  • 打赏
  • 举报
回复
研究这个没什么意义,按引用本身的概念不会有内存,但是实现上你不可能不分配内存。
FengRider 2009-04-18
  • 打赏
  • 举报
回复
[Quote=引用楼主 die_angle 的帖子:]
在C++函数中:
void fun(int &x){}
在函数执行到这个函数的时候,到底有没有给x分配空间,如果分配了那么这个空间里存的是什么?
这个问题我思考了很久了,希望您们能给我一个具体一点的答案。

感谢各位了!!!!!
[/Quote]
这里的x只是传入参数的一个别名,空间已经分配了。如下代码所示:
void fun(int &x)
{
x = 2;
.......
};
int testNum = 0; //定义一个整型变量testNum ,为其分配空间,并将其值初始化为0
fun(testNum); //调用fun函数,将testNum作为参数传入fun函数。在fun的定义里面,所有对x的操作,在这里实际上就是对testNum进行操作
phisherr 2009-04-18
  • 打赏
  • 举报
回复
输出引用的地址实际上获得的是变量的地址
cxxer 2009-04-18
  • 打赏
  • 举报
回复
引用就是别名.
加载更多回复(19)

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧