Carte mémoire pour un tableau 2D en C

Pensez-vous que cette discussion sur la mémoire-carte de tableau 2D est correcte? Surtout cette photo? Pouvez-vous expliquer la théorie?

Supposons que nous déclarons un tableau 2D en C comme ceci:

int arr[3][3]={10, 20, 30, 40, 50, 60, 70, 80, 90};

Maintenant, d'après cette discussion, la mémoire sera organisée comme suit:

Carte mémoire pour un tableau 2D en C

Maintenant, j'ai écrit le code suivant pour tester cette théorie:

#include <stdio.h>

main()
{
    int arr[3][3]={10, 20, 30, 40, 50, 60, 70, 80, 90};
    printf("      arr==%d\n", arr);
    printf("  &arr[0]==%d\n", &arr[0]);
    printf("   arr[0]==%d\n", arr[0]);
    printf("&arr[0][0]=%d\n", &arr[0][0]);
    printf(" arr[0][0]=%d\n", arr[0][0]);
}
/*
Output:
========
      arr ==1245028
  &arr[0] ==1245028
   arr[0] ==1245028
&arr[0][0]==1245028
 arr[0][0]==10
Press any key to continue...
*/

Pourquoi les 4 premières sorties sont les mêmes?

source d'informationauteur anonymous