gpt4 book ai didi

c++ - 引用变量如何存储在内存中

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:26:27 26 4
gpt4 key购买 nike

两个问题:1)引用变量如何存储在内存中?

int a=1;
int &b=a;
cout<<&a<<endl<<&b;

a 和 b 的地址是一样的吗?所以,b 作为引用变量在 mem 中不占用空间?!

2)refrence变量只能在定义的时候初始化,但是如果可以多次初始化?代码怎么写(只是告诉表单本身而已)?

int a=c=1;
int &b=a;
b=c;//i know this will change the source value of a,not re-assign the ref b,so
&b=c;//will this be ok?

最佳答案

对于如何存储引用,语言没有指定,但大多数编译器会在内部将它们实现为指针。

无论如何,由于引用对作为程序员的您来说是“透明的”,所以当您编写 &b 时,您实际上是在获取被引用对象的地址,而不是引用。这就是您获得相同地址的原因。

类似地,写入 &b=c 对引用本身没有任何作用,而是将值 c 写入指针,该指针是 a 的地址(无意义的事情)。它与 int* ptr = &b; 相同ptr = c;

重要的是要理解 & 作为“地址”,& 作为引用类型表示法,are two different things :

int a;
int* ptr = &a; // <--- taking (and storing) the address of `a`, i.e. a pointer

int& b = a; // <--- declares a reference to `a`; `b` now behaves like `a`

// Two entirely different meanings of `&`.

&还有第三种含义,即位与

无论如何,如果您想重新安排引用资料,那您就不走运了。你根本无法做到这一点。

关于c++ - 引用变量如何存储在内存中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22116997/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com