参照

C言語では、引数をポインタにすることで、変数のアドレスをもらい、関数内部からそのアドレスの変数にアクセスして、値を書き換えることができた。
ただ、アクセスするときはポインタ演算子'*'が必要だった・・・。

void func(int *a){

  *a = 10; /* 呼び出し元で指定したアドレスが指す変数の値が10になる. */

}

C++では、引数を参照にすることで、引数名そのままで呼び出し元の変数にアクセスできる・・・。

void func(int &a){

  a = 10; /* 呼び出し元で指定した変数の値が10になる. */

}

参照は、宣言で'&'を付けて

<型> &<変数名や引数名>

独立参照ということで、変数としても使えるが、まあ普通は関数の引数に使うのが多いだろう・・・。

これを使って、2つの変数の値を交換するswap関数を作る・・・。

と関数swap()をプロトタイプ宣言・・・。

定義では、

ポインタ演算子'*'を全く使わずに、値の交換作業ができている・・・。

swap()の呼び出しも、

アドレス演算子'&'はいらない・・・。変数名を渡すだけ・・・。

swap()前後の値を出力して、交換できてるか確認・・・。

]$ ./reference
a: 10
b: 20
swap before: a = 10, b = 20
swap after: a = 20, b = 10
$

できてる・・・。

Sample/reference.cpp at master · bg1bgst333/Sample · GitHub