C言語 ポインタと配列の関係

ポインタと配列は、密接な関わりがあります。

#include <stdio.h>

void main(void) {
      char array[5];
      char* p;

      array[0] = 's';
      array[1] = 't';
      array[2] = 'a';
      array[3] = 'r';
      array[4] = '\0';

      p = array;

}

上のようなプログラムの場合、
p = array; と言う文は、
どんな意味になるでしょうか。

配列名だけを書くと、その配列の先頭アドレスを表す事になります。
(p = &array[0]; と同じ意味となります。)

ここでは、arrayの先頭アドレスをポインタ変数pに代入してるので、

以後、pとarrayは同じものとして扱えます。

例えば

p = array; の実行後、*p と array[0] は同じ値を指す事になります。

また、ポインタ型変数p に添え字をつけて表現する事もできます。

p = array; の実行後、p[0] は、array[0] と同等。

p[3] は、array[3] と同等となります。

■参考記事
ポインタのアドレス計算

タイトルとURLをコピーしました