2D配列にアクセスするために1つの添え字のみを使用する場合に、Cが行の正しいメモリアドレスを取得する方法を誰かが説明できますか?
例 -
int array2D[2][2] = {1,2,3,4};
printf ( "starting address of row2 = %p" , array2D[1]);
Cで添え字を付けると、実際に行われているのはポインターの追加であるため、1d配列の場合、配列名は要素0を指します。この場合、要素1が必要な場合、コンパイラーは開始アドレス(たとえば4000)を取得します。それに4を追加して(4ビットintと仮定)、返されるのはメモリアドレス4004のアイテムになるようにします。
私の理解では、私の例のように2D配列にデータを入力すると、それらは順番に割り当てられるので、
1
234
アドレス
4000 4004
4008 4012
では、Cは、この場合、array2D [1]が4004ではなく4008を指す必要があることをどのように計算しますか?sizeof()演算子を実行しますか、それともここで基本を誤解しましたか?
前もって感謝します