質問: &number; cout << var << endl; ``` 上記コードでは、10が出力されると思っておりましたが、numberのアドレスが出力されます。 なぜこのようになるのかご教示頂けますと幸いです。
回答: 今回のプログラムにおいて、ポインタ変数の名前は `*var` ではなく `var` であることに注意してください。 ``` int number = 10 int *var = &number; ``` ここまで書いた時点で、それぞれの変数はこういうことになっています。 * `number`: `int` 型の変数で、値は `10`。 * `var`: `int *` 型の変数で、値は `number` のアドレス。つまり、「`int` 型の変数 `number`」へのポインタ。 ここで、今回のプログラムに登場する `*` には2種類あることを注意しておきます。1つは型の名前に登場し、ポインタを表す `*`。そしてもう1つは、単項演算子としての `*` です。単項演算子 `*` は、「そのアドレスにある値」を求めるために使います。したがって、 * `var` を評価すると `number` のアドレス * `*var` を評価すると `number` の値 が得られることになります。