ポインタは, メモリ空間における, 変数のアドレスを表します.
例えば, 以下のコードを見てください.
#include <iostream> using namespace std; int main () { double d = 100.0; cout << "[d] " << "値: " << d << " アドレス: " << &d << endl << endl; double* p = &d; cout << "[p] " << "値: " << p << " 格納されている値: " << *p << endl; return 0; }
6行目で, double型の変数dを, 100で初期化しています.
さらに, 9行目で, double型のポインタpに, dのアドレスを代入しています.
出力結果の例は, 以下の通りです.
[d] 値: 100 アドレス: 003FFE20 [p] 値: 003FFE20 格納されている値: 100
pの値が, dのアドレスになっています.
さらに, pが指すアドレスに格納されている値が, dの値になっています.
「ポインタがなくても, 変数とアドレス演算子だけで, 十分ではないか!」と思うかもしれません.
なぜ, ポインタが必要なのでしょうか?