问题 int (*p)[4] , *ptr; int a[4] = {10,20,30,40}; printf("%p\n%p\n%p",&a,a,&a[0]); p = &a ; //p=a; gives error //ptr = &a; gives error ptr = a; Output: 0x7ffd69f14710 0x7ffd69f14710 0x7ffd69f14710 I tried to understand what a , &a , and &a[0] returns and its the memory address of starting variable. So, why am I getting errors in some of these assignments ? I mean, if p = &a = 0x7ff... works, why not p = a = 0x7ff.. ? If possible, can anyone please make me understand through a block diagram of