【C言語】配列のポインタ (&は不要)

この記事では、C言語で配列のポインタを扱う方法について紹介します。

## 配列とポインタの関係

ポインタは、変数を格納しているアドレスを示す表現です。
配列は、「各要素に連続したアドレス(番地)」割り当てられます。

配列名は、配列の名前であると同時に「先頭要素のアドレス」を示します。
なので、変数と違ってアドレスを得るのに「アドレス演算子&」が不要となります。

【変数の場合】
int x;
int *px;
px = &x; // 変数のアドレスを取得するにはアドレス演算子&が必要

【配列の場合】
int score[3];
int *ps;
ps = score; // 配列名自身がアドレスを持つのでアドレス演算子&は不要

C言語では、変数名(x)を右辺に書くと変数内のデータを渡します。
C言語では、配列名(score)を右辺に書くと、その配列の先頭要素のアドレスを渡します。

よって、psには配列scoreの先頭要素(score[0])が代入されます。
配列の各要素のアドレスは連続しているので、先頭要素のアドレスさえわかれば、他の要素のアドレスもすぐにわかります。

【関連記事】
C言語入門 (サンプルプログラム集)

コメント