in c primer plus, it tells me some assignment rules followed:
a pointer-to-array-of-ints can't be assigned to a pointer-to-int.
int *pt; int a[3][2];
pt=a; /* invalid */
a pointer-to-array-of-two-ints can't be assigned to pointer-to-array-of-three-ints.
int (*pt)[3]; int a[3][2];
pt=a; /* invalid */
frankly I am confused this explanation. Because though the above pointers are pointers to different objects, in memories, pointers are all stored as hexadecimal address in unsigned, which means they have the same storage forms. they are unified in 8 bits(64bit OS) or 4bits(32bit OS). So why do they can't assigned to each other in root cause? Because compilers prohibit these kinds of assignments?