C/C++中的這兩種書寫方法實在是很像,可是它們的含義有很大的不一樣,因此必定要能清晰地辨別它們。數組
簡單地說,int *p[4]
是指針數組,int(*p)[4]
是指向數組的指針spa
指針數組:是一個元素全爲指針的數組;數組指針:能夠理解爲指針,只是這個指針類型不是int而是int[4]類型的數組指針
int *p[4]
,p是一個指針數組,每個指向一個int型的,等價於(int *) (p[4])
code
int (*p)[4]
,p是一個熱指針,指向int[4]的數組blog
上面的緣由是,*
(間接引用運算符) 的優先級低於 []
的優先級。圖片
首先看int *p[4]
,[] 的優先級高,因此塔首先是一個大小爲4的數組,即p[4]
,剩下的int *
做爲補充說明,即說明該數組的每個元素爲指向一個整數類型的指針。int *p[4]
的存儲結構以下:it
再看int (*p)[4]
。它首先是一個指針,即 *p
,剩下的 int[4]
做爲補充說明,即說明指針p 是指向一個長度爲4的數組。int (*p)[4]
的存儲結構以下:class