Can anyone please explain visually as to how the 2D array is stored in memory as: a , &a, &a[0] , a[0] all have the same address... It seems like a pointer pointing to itself in a way...and that cant be right... This has been bugging me for nearly a year and searching on the web has lead me to no apt answer as well..... help is really appreciated....thanx
enter code here
#include<stdio.h>
int main()
{
int a[2][3]={10,20,30,40,50,60};
int row =0,col=0;
printf("&a = %d ",&a);
printf("\na = %d ",a);
printf("\n&a[0] = %d ",&a[0]);
printf("\na[0] = %d ",a[0]);
printf("\n&a[1] = %d ",&a[1]);
printf("\na[1] = %d ",a[1]);
printf("\n&a[0][0] = %d ",&a[0][0]);
int *p;
printf("\n\n sizeof(p) = %d ",sizeof(p) );
printf("\n\n sizeof(a) = %d ",sizeof(a) );
printf("\n\n sizeof(&a) = %d ",sizeof(&a) );
printf("\n\n sizeof(&a[0]) = %d ",sizeof(&a[0]) );
printf("\n\n sizeof(a[0]) = %d ",sizeof(a[0]) );
printf("\n\n sizeof(&a[1]) = %d ",sizeof(&a[1]) );
printf("\n\n sizeof(a[1]) = %d ",sizeof(a[1]) );
printf("\n\n sizeof(&a[0][0]) = %d ",sizeof(&a[0][0]) );
}
OUTPUT
&a = 2293536
a = 2293536
&a[0] = 2293536
a[0] = 2293536
&a[1] = 2293548
a[1] = 2293548
&a[0][0] = 2293536
sizeof(p) = 4
sizeof(a) = 24
sizeof(&a) = 4
sizeof(&a[0]) = 4
sizeof(a[0]) = 12
sizeof(&a[1]) = 4
sizeof(a[1]) = 12
sizeof(&a[0][0]) = 4
Don't refer me to Memory map for a 2D array in C ... that didnt help ...