アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんにちは。宜しくお願い致します。

> たとえば,下のサンプルプログラムでは関数fが参照を返すようになっているため,この関数fを代入の左辺においた,f(a, n) = 10;のような式が許される.
>
> #include <iostream>
> using namespace std;
>
> int& f(int* a, int n)
> {
(2)~ return a[n];
> }
>
> int main(void)
> {
> const int n = 5;
> int arr[n] = { 1, 2, 3, 4, 5 };
(1)~ f(arr, 3) = 10;
> for (int i = 0; i < n; ++i)
> cout << arr[i] << endl;
> return 0;
> }

上のサンプルプログラムで左辺値に参照を返す関数が(1)~あるのですが
動作が分りません。 関数内部の(2)~return a[n];というところで、関数の返り値int&の参照はa[n]という変数になるので、(1)~の結果としてa[n]に10が代入されるのでしょうか?教えてください。

A 回答 (1件)

参照とは、要は別名のことです。


(2) の部分で返されているのは、a[n] で、a は int* となっています。
そして、そのポインタの先にあるのは arr なので、結果としては arr[3] = 10; となります。
ただ、この例は参照の説明にはあまり適さないと思います^^;
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2009/04/04 20:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!