指針數組和數組指針---C/C++中int *p[4]和int (*p)[4]的區別

簡單介紹

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

相關文章
相關標籤/搜索