引用如何共享内存地址
How reference share the memory address
我正在读取c++中b/w指针变量和引用变量的区别。我从中得到了一点,而引用共享相同的内存地址,但也占用了堆栈上的一些空间。它共享相同的地址空间意味着什么?请澄清引用是如何在c++中实现的。
这是一个措辞有些混乱的答案。但它的意思相当简单。关于占用堆栈空间的部分只是意味着引用实际上占用了内存。也就是说,它占用的内存量与指针相同(在[我所知]的每个C++实现中,它都是通过使用实际指针来实现的)。
关于"共享同一内存地址"的部分实际上意味着引用不是一个可独立寻址的值。如果你有一个指向某个东西的指针,你可以取该指针的地址,最后得到一个指向某种东西的指针。但是,如果你有一个引用的东西,你不能采取该引用的地址。试图这样做实际上需要引用对象的地址。这就是他所说的"共享同一内存地址"的意思。
粗略地说,引用变量就像一个看起来不像指针的指针变量(即没有用于访问内容的指针语法)。这与Stack或Heap无关。
int i = 5; // integer on the Stack
int * j = new int (5); // integer on the Heap (accessible through pointer, naturally)
int & iref = i; // reference to integer on the Stack
int & jref = *j; // reference to integer on the Heap
int * ipointer = & i; // pointer to integer on the Stack
int * jpointer = j; // pointer to integer on the Heap
相关文章:
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- 在C++中打印指向不同基元数据类型的指针的内存地址
- 为什么 vector 的随机访问迭代器给出与指针不同的内存地址?
- 使用内存地址访问结构的属性值
- 为什么C++总是显示十六进制内存地址,而不仅仅是整数?
- 将布局映射到内存地址
- 为什么同一个变量的内存地址不同?
- 无法将内存地址转换为值
- 给定特定内存地址的数组的动态内存分配
- 在 Microsoft Access SQL 中调用自定义 DLL 函数时传递的内存地址无效
- 获取 R 数据帧的内存地址
- c++ 编译器是否保护常量内存地址免受任何更改?
- 如何防止矢量的内存地址更改
- cout 打印内存地址而不是值
- 如何运行外部程序,向其传递内存地址以读取/写入?
- 循环中的变量被设置为下一个数组的元素始终具有相同的内存地址?
- 重载 ostream << 运算符,指针作为参数,导致输出上的内存地址
- C++在变量的内存地址上做什么来"deallocate"它?
- 在指向现有内存地址的 hpp 文件中声明成员函数的最佳方法
- 为什么我无法获取 MSVS2019 / C++ 中字符或uint8_t变量的内存地址?