#include <stdio.h>
int main(void) {
// 配列とポインタの関係の処理確認コード
int arr[3] = {10, 20, 30};
int *p = arr; // 配列名は先頭要素のアドレス &arr[0]
int second = *(p + 1); // arr[1] と同等
return 0;
}
上記に示すコード例では、配列とポインタの関係の基本的な文法スタイルと実際の処理手順を簡潔に示しています。ソースコードをコンパイラでビルドして実行することにより、配列とポインタの関係が規定通りの挙動を示し、期待通りのデータ処理が行われることを直接確認することができます。
もう少し詳しく
C言語の仕様上、式の中で配列名を使用すると、自動的に「配列の先頭要素へのポインタ(&arr[0])」として評価されます。ポインタに対する加算(p + 1)は、単純な1バイトの加算ではなく、ポインタが指すデータ型のサイズ分だけアドレスが移動します。構文上 arr[i] と *(arr + i) は完全に等価です。