2011-01-14 10 views
0

誰かが以下のコードスニペットの出力が20である理由を説明してもらえますか?そして10が表示され変数の参照とアドレス(メモリの場所)

int i = 10; 
cout << i << endl; 

int &r = i; 
r = 20; 
cout << i << endl; 

まず、変数i格納整数値10 。 はその後rのアドレス(rのメモリ位置)が10そしてr20なりしかし、なぜ20からi変更などもあるiに設定されていますか?

rの整数の内容は変更されていますが、そのアドレス(メモリの場所)は変更されていません。

おかげで、

答えて

1

変数rはiを参照しています。ポインタは、* r = 20というよりポインタのようなものです。 あなたはちょうどr = 20と言う。それはrの値を変更します。

1

あなたは、あなたが実際にも私であるに指していたものをrの変更Rを変更することができたときに、それはそうほとんどのポインタのようなものだ参照してください。

実際には、参照はポインタまたはアドレスではなく、オブジェクトです。少なくともC++の世界では。

0

としてそれについて考える:これははい、Cプログラマはそれをそのように見ることができますが、それは参照が*でないことを明瞭に重要ですシーン

+0

背後に何が起こっているか、基本的には

int i = 10; cout << i << endl; int *p = &i; *p = 20; cout << i << endl; 

* Aポインタですが、*はオブジェクトです。 – SRM

+0

だからこそ私は基本的に何が起こっているかを舞台裏で語った* –

関連する問題