スポンサードリンク
HOME > C++言語 > 参照について

C++言語 - 参照について

C言語には、ポインタと言う機能がありましたが、

これと似た機能が参照です。

void main(void) {
   int a;
   int *ip;    // ポインタ型変数
   int &refp = a; // 参照型変数宣言
           // 変数refpを変数aの参照とする。

   ip = &a;   // 変数aのアドレスをipに代入

   // 通常のポインタでの代入
   *ip = 100;  // 変数aの値=100になる

   // 変数refpを使って変数aの値にアクセスできる
   refp = 500;  // 変数aの値=500になる

}


この例では、変数aの値を、ポインタと参照を使って変更しています。


参照型変数は、宣言時に他の型の参照を初期値として設定しなければなりません。

この場合、変数refpは、変数aの参照となります。

そして、変数refpは変数aと同じモノとして扱う事ができます。

つまり、「変数refpは、変数aの別名である。」と解釈する事ができます。

変数refpを使って、変数aの値にアクセスできます。


ポインタ型変数のように*(アスタリスク)や&(アンパサンド)記号を使わずに

扱う事ができるため、大変便利な機能です。

ただ、ポインタの扱いに慣れている方にとっては、違和感を覚えるかもしれませんが。

参照機能の内部では、ポインタ処理が行われています。



記述面では便利ですが、ポインタ機能と比べると、

機能面としては、ポインタの方が勝ります。

1.参照は、変数宣言時に初期化する必要がある点。
  ポインタは、変数宣言時に初期化する必要がない。

2.参照変数を初期化すると、その後は、別の参照として使う事ができない点。
  ポインタは、別のアドレスを代入して使用する事ができる。

3.参照は、変数のアドレス値の操作(インクリメントなど)ができない点。
  ポインタは可能。



スポンサードリンク







HOME

言語解説編
プログラミング用語・知識

C言語

C++言語

Java

C#

Visual Basic.NET

アプリケーション編
C言語による
コンソールプログラミング




Copyright (C) プログラミングランド All Rights Reserved