2

我正在阅读 C++ 中的黑白指针变量和引用变量有什么区别。我从中得到了一点,而引用共享相同的内存地址,但也占用了堆栈上的一些空间。. 它共享相同的地址空间是什么意思。请明确引用是如何在 C++ 中实现的。

4

2 回答 2

9

这是一个措辞有些混乱的答案。但这意味着相当简单的事情。关于占用堆栈空间的部分只是意味着引用实际上占用了内存。即,它占用与指针相同的内存量(并且在每个 C++ 实现中[我知道]它都是通过使用实际指针来实现的)。

关于“共享相同的内存地址”的部分实际上意味着引用不是可独立寻址的值。如果您有指向某物的指针,则可以获取该指针的地址并最终得到指向某物的指针的指针。但是,如果您对某物有引用,则不能获取该引用的地址。尝试这样做实际上会获取所引用事物的地址。这就是他所说的“共享相同的内存地址”的意思。

于 2012-08-22T08:55:32.000 回答
2

粗略地说,引用变量就像一个看起来不像指针的指针变量(即没有用于访问内容的指针语法)。这与堆栈或堆无关。

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
于 2012-08-22T08:55:50.643 回答