【发布时间】:2021-05-27 12:32:12
【问题描述】:
编译后,引用变成什么,是地址,还是常量指针?
我知道指针和引用的区别,但我想知道底层实现的区别。
int main()
{
int a = 1;
int &b = a;
int *ptr = &a;
cout << b << " " << *ptr << endl; // 1 1
cout << "&b: " << &b << endl; // 0x61fe0c
cout << "ptr: " << ptr << endl; // 0x61fe0c
return 0;
}
【问题讨论】:
-
汇编输出对您有什么建议?
-
请注意,引用不是 C++ 标准中的
objecten.cppreference.com/w/cpp/language/object -
举个例子,同一个变量值,同一个地址可以通过指针或者引用找到,没什么特别的。
-
@BarryBao 这就是引用点,一旦分配,它们就与它们所引用的对象无法区分。在您的示例中,
&b和&a是同一件事。 不可能获取引用本身的地址。 -
当然。这是一个人的昵称和一个人的名字之间的关系。