次のコードスニペットを含むCテキストを読んでいたときに、逆参照されたポインターの値に関して混乱が生じていることに気付きました。
int main()
{
int matrix[3][10]; // line 3: matrix is tentatively defined
int (* arrPtr)[10] = matrix; // line 4: arrPtr is defined and initialize
(*arrPtr)[0] = 5; // line 5: what is the value of (*arrPtr) ?
私の混乱は、最後の行の*arrPtrの値に関するものです。これがそれまでの私の理解です。
3行目、行列は、int型の10個の要素の配列型の3個の要素の配列であると宣言されています(暫定的に定義されています)。
4行目、arrPtrは、int型の10個の要素の配列へのポインターとして定義されています。また、10個の要素の配列(つまり、行列の最初の行)へのptrとして初期化されます。
5行目でarrPtrが逆参照され、実際の配列が生成されるため、その型は10intの配列になります。
私の質問:なぜ配列の値は、配列のアドレスだけであり、その要素に何らかの形で関連していないのですか?