我正在阅读c ++ here's中b / w指针变量和引用变量之间的区别。我从得到一点,而引用共享相同的内存地址,但也占用了堆栈上的一些空间。。 它是什么意思,它共享相同的地址空间。请清楚如何在c ++中实现引用。
答案 0 :(得分:9)
这是一个有点令人困惑的答案。但这意味着相当简单的事情。关于占用堆栈空间的部分仅仅意味着引用实际占用内存。也就是说,它占用了与指针相同的内存量(并且在每个C ++实现中[我知道]它是通过使用实际指针实现的。)
关于“共享相同内存地址”的部分实际上意味着引用不是可独立寻址的值。如果你有一个指向某个东西的指针,你可以获取该指针的地址,最后得到指向某个东西的指针。但是,如果您对某些内容有引用,则无法获取该引用的地址。试图这样做实际上需要引用的东西的地址。这就是他所说的“共享相同的内存地址”。
答案 1 :(得分:2)
Roghly说,引用变量就像一个看起来不像指针的指针变量(即没有用于访问内容的指针语法)。这不需要对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