让我们声明:参考对象
...
int a= 5;
int& b= a;
...
我不明白,a
和b
之间有什么区别。我想,那a
和b
只是地址。但是这个地址在内存中呢?所以,让我们定义一个函数:
int foo(int& x)
{
return x;
}
...
foo(a);
foo(b);
时foo
在呼唤什么是发生?即当我们通过a
或b
的地址返回值时,我们将返回一个值?
让我们声明:参考对象
...
int a= 5;
int& b= a;
...
我不明白,a
和b
之间有什么区别。我想,那a
和b
只是地址。但是这个地址在内存中呢?所以,让我们定义一个函数:
int foo(int& x)
{
return x;
}
...
foo(a);
foo(b);
时foo
在呼唤什么是发生?即当我们通过a
或b
的地址返回值时,我们将返回一个值?
代码中会发生什么a
和b
实际上是相同内存位置的别名。
因此
foo(a);
和
foo(b);
实际上是相同的。
http://www.cplusplus.com/doc/tutorial/pointers/
阅读了有关详细信息,事情通常都非常好详细的cplusplus.com文章
-1:没有指针在这里,和cplusplus.com是一堆臭屁股。 –
@JohnDibling从某种意义上说,这里实际上有指针。首先,OP讨论地址,其次,引用基本上是很好的指针。如果您没有专门针对'http:// www.cplusplus.com/doc/tutorial/pointers /',那么您对'cplusplus.com'的看法在这里是无关紧要的。 – stefan
@stefan:cplusplus.com上的链接页面指出,指针和数组是相同的东西。这是错误的。我确信我可以在该特定页面上发现更多错误,但我不同意我的观察,即cplusplus.com是一个可怜的资源,这是无关紧要的。随着整个网站洒满了许多错误,我的感觉就是根本无法将它作为资源信任。尤其是新手,他们根本不知道好信息和坏信息之间的区别。他们怎么可能? –
'B'仅仅是'了'另一个名字。把它想成别名吧。你用'b'做的任何事情,你真的用'a'做。至于函数,它是'void',所以返回任何东西都没有意义。 – juanchopanza
什么?另外,你不能从'void'函数返回一些东西。 –
[C++中指针变量和引用变量之间有什么区别?]可能的重复(http://stackoverflow.com/questions/57483/what-are-the-differences-between-pointer-variable-and-reference-可变式-C)。另请参见[引用存储的值是多少?](http://stackoverflow.com/questions/412084/what-value-does-a-reference-variable-in-c-store) –