C++ ポインタ演算子(& および *)

C++ 演算子

C++ には2つのポインタ演算子があります。1つはアドレス演算子 &、もう1つは間接参照演算子 * です。

ポインタは別の変数のアドレスを含む変数です。別の変数のアドレスを含む変数は、別の変数を「指す」と言えます。変数は、オブジェクト、構造体、ポインタなど、任意のデータ型にすることができます。

アドレス演算子 &

& は単項演算子で、オペランドのメモリアドレスを返します。例えば、var が整数型変数の場合、&var はそのアドレスです。この演算子は他の単項演算子と同じ優先順位を持ち、演算時には右から左へ順に評価されます。

& 演算子は次のように読めます「アドレス演算子」つまり、&var「var のアドレス」と読みます。

間接参照演算子 *

2つ目の演算子は間接参照演算子 * で、& 演算子の補完です。* は単項演算子で、オペランドが指定するアドレスにある変数の値を返します。

次の例を見て、これら2つの演算子の使い方を理解してください。

例

#include <iostream>
 
using namespace std;
 
int main ()
{
   int  var;
   int  *ptr;
   int  val;

   var = 3000;

   // var のアドレスを取得
   ptr = &var;

   // ptr の値を取得
   val = *ptr;
   cout << "Value of var :" << var << endl;
   cout << "Value of ptr :" << ptr << endl;
   cout << "Value of val :" << val << endl;

   return 0;
}

上記のコードがコンパイルおよび実行されると、次の結果が生成されます:

Value of var :3000
Value of ptr :0xbff64494
Value of val :3000

C++ 演算子

その他の拡張