C++のアドレスとポインタについて

[code]

    int number = 10
    int *var = &number;
    cout << *var << endl;
    
[/code]

上記コードにおいて、numberのアドレスが出力されると思っておりましたが、  
10が出力されます。

一方、

[code]

    int number = 10
    int *var = &number;
    cout << var << endl;
    
[/code]

上記コードでは、10が出力されると思っておりましたが、numberのアドレスが出力されます。  
なぜこのようになるのかご教示頂けますと幸いです。




今回のプログラムにおいて、ポインタ変数の名前は `*var` ではなく `var` であることに注意してください。

[code]

    int number = 10
    int *var = &number;
    
[/code]

ここまで書いた時点で、それぞれの変数はこういうことになっています。

  * `number`： `int` 型の変数で、値は `10`。
  * `var`： `int *` 型の変数で、値は `number` のアドレス。つまり、「`int` 型の変数 `number`」へのポインタ。

ここで、今回のプログラムに登場する `*` には2種類あることを注意しておきます。1つは型の名前に登場し、ポインタを表す
`*`。そしてもう1つは、単項演算子としての `*` です。単項演算子 `*` は、「そのアドレスにある値」を求めるために使います。したがって、

  * `var` を評価すると `number` のアドレス
  * `*var` を評価すると `number` の値

が得られることになります。




今回のプログラムにおいて、ポインタ変数の名前は `*var` ではなく `var` であることに注意してください。

[code]

    int number = 10
    int *var = &number;
    
[/code]

ここまで書いた時点で、それぞれの変数はこういうことになっています。

  * `number`： `int` 型の変数で、値は `10`。
  * `var`： `int *` 型の変数で、値は `number` のアドレス。つまり、「`int` 型の変数 `number`」へのポインタ。

ここで、今回のプログラムに登場する `*` には2種類あることを注意しておきます。1つは型の名前に登場し、ポインタを表す
`*`。そしてもう1つは、単項演算子としての `*` です。単項演算子 `*` は、「そのアドレスにある値」を求めるために使います。したがって、

  * `var` を評価すると `number` のアドレス
  * `*var` を評価すると `number` の値

が得られることになります。

