カテゴリー
C++

「参照」について知ろう

この章ではC言語にはない新しい機能である参照について学習します。
参照の機能はポインタの機能と似ています。
初めにポインタの復習から始めます。
ではポインタの例をみてみましょう。1 aとpは同じメモリ領域を共有するため、「*p」に98を代入するという動作は aにも98が代入されるという意味になります。
今度は参照を使って、上のポインタの例と同じ結果を出してみます。1 参照とは「変数のアドレスを指す識別子」のことです。
つまり、ポインタと同じことが出来ると思っていいです。
参照を作成するには宣言の時に「&」を付けます。1 と記述していますが参照を使う場合は必ず宣言と同時に値を入れなければいけません。
つまり、以下のように参照を宣言した後に改めて変数を代入することはできません。1 「b=98;」のようにbに98を代入したのに、1を出力するとaまで98に変わってしまいます。
これが参照の機能です。
結果は以下の通りです。1
次は関数の引数に参照を使ってみましょう。1 この例では関数の引数に参照を使っています。
incre(n);の箇所でnをincre関数に渡しています。
incre関数では参照型aで値を受け取って、その値に1を足しています。
その後、1で出力するとnに1が足された数が出力されます。
参照aに1を足したことで、nにも1が足されます。
つまり、aとnは同じアドレスと言うことです。
例えば4を入力すると5が出力されます。1 以下の例は先ほどの例と比べて参照を使っていない以外は全く同じです。1 参照を使っていないので、1でnをincre関数に渡して、1を足してもnの値に影響を及ぼすことはありません。
「std::cin >> n;」で入力した値が1で出力されるだけです。1 次は参照の引数に「const」を付けた時の動きを見てみましょう。11 関数の引数にconstを指定すると、その関数の中では値を書き換えることができなくなります。
つまり、引数aにconstを付けると1のように変更することが出来なくなります。
constを付けることにより、引数の中身を書き換えないことを明確にできるメリットがあります。
ですので、この例はエラーです。
constは仮引数が参照ではなくても、使うことができます。