【C言語 ポインタ解説その1】ポインタの使い方を分かりやすく解説します

ポインタの使い方
ポインタってなんぞや?

という方向けの記事です。

 

ポインタとは

ポインタと一概に言ってもいくつかあります。

それがポインタ型とポインタ値とポインタ変数です。この3つの総称がポインタです。

 

ティロ
一言で言うとアドレスを記憶できる変数です。アドレスとは住所のことで、記憶した場所のことです。

ポインタ型とはintやdouble型と同じで型です。しかし通常の型とは少し違います。

ポインタ型はintやdoubleなどの型と一緒に宣言しなければいけません。ポインタ型だけを使うことは出来ないのです。

ペンギンさん
なるほど、意味がまったく分からない
なぜポインタ型だけを使うことが出来ないのか、
ある変数を取り出したい時、アドレスから変数を取り出すとします。そこで必要となる情報は変数の型と変数の場所です。
変数の場所はポインタで指定すれば良いですが、変数の型は分かりません。なのでポインタ型は変数の型と一緒に使います。
ポインタ値とはアドレスの値のことです。
ペンギンさん
普通の値(整数など)と何が違うの?
ティロ
違いはないです
ペンギンさん
じゃ、なんでわざわざポインタ値って名前がついてるの?
仮にアドレスの値が整数だったらintでも構いません。しかしintやdoubleなどは計算のために使う変数であり、アドレスの値として使うものではありません。
区別して使った方が分かりやすいからです。
ポインタ変数とは宣言した変数のことです。intやdoubleなどで宣言した変数と同じ感覚です。この後、実際に使います。

ポインタ変数を使ってみる

ポインタ変数を宣言します。
変数の宣言の仕方は2種類あります。
printfで表示すると002AE000となり、これはアドレスを表しています。※アドレスはひとによって様々です。

またアドレスを表示させたいときは%pとします。

次にポインタ変数を通常の変数と同じように使ってみます。

通常の変数のように使う際はポインタ変数の前に*をつけます。

実行すると 2 と表示されます。

次の例ではポインタ変数と通常の変数を定義して、ポインタ変数に数値を代入します。通常の変数とポインタ変数のアドレスを等しくしたものをそれぞれ表示させます。

結果は 2 2 です。アドレスが同じなので同じ数値が表示されます。

p = &i;の&はアドレスを示し、&iは変数 i のアドレスということになります。そこにポインタ変数のアドレスを代入しています。

変数名が異なってもアドレスが一緒なので同じ値となります。

 

参考書籍