數組指針:
首先看名字「數組指針」是「指針」,那就能夠看成指針理解囉。可是前面有數組,也就是它指向的是數組。
看-》 int (*p)[10], 咱們從表達式分析,由於()的優先級高,因而*p表明p是指針,又int 修飾的是[10]表示
一個含有10個int型的數組,因而p表明的是含有10個元素的數組的首地址。
也許該這麼定義數組指針:
int (*)[10] p
由於依咱們的手法,確定前面是類型,後面是變量嘛,因而前面定義的類型是一個數組指針,
後面是該指針的名字。可是編譯器可不這麼想啦,由於這樣寫太醜。因而就寫成了
int (*p)[10]
指針數組:
指針數組,故名思義指針數組就是「數組」,因而呢,可是數組裏面的內容是指針,因而呢咱們
int *p[10]
這裏能夠這樣理解,因爲[]的優先級比*更高,因而首先這個p 與[]結合成一個數組,因而數組名
是p,後面的int *則修飾裏面的內容,獲得是一個含有10個int*的數組。
指針的指針
指針的指針就是指針裏面存儲的內容仍是一個指針地址。
數組指針 指針數組 指針指針在形參與實參上的關係
「數組名被改寫成一個指針參數」規則並非遞歸定義的。數組的數組會被改寫成「數組的指針」,而不是「指針的指針」:css
實參 所匹配的形參web
數組的數組 char c[8][10]; char (*)[10]; 數組指針數組
指針數組 char *c[10]; char **c; 指針的指針spa
數組指針(行指針) char (*c)[10]; char (*c)[10]; 不改變指針
指針的指針 char **c; char **c; 不改變blog