快速判斷區分「指針數組」和「數組指針」

引言

指針數組:元素爲指針的數組 int*p[5]
數組指針:指向數組的指針 int(*p)[5]
接下來從名稱和C語言定義兩方面來講一說。數組

名稱

指針數組是一個數組,數組指針是一個指針。也就是之後面的賓語決定。
舉例:指針

紅蘋果  是一個蘋果
  蘋果紅  是一種顏色

C語言定義

int*p[5]
[]優先級高於*,因此先是p[5]被定義爲一個數組,int*再定義數組p[5](包括數組中全部元素)爲指針。此時p仍和[5]以數組p[5]的形式存在,只是這個數組的元素成爲了指針。code

int(*p)[5]
()優先級高於*,(*p)定義爲一個指針,咱們把*p當作一個總體,用a代替,變爲int a[5];能夠看出這就是一個普通數組的定義。只不過指向數組地址的a變成了*p,也就是說p是二級指針,它的值*p=a,a是一個地址,指向數組。語言

死記硬背

究竟是指針仍是數組,p是主角,看它先和誰定義。在int*p[5]中,p先和[]結合定義,那麼它就是數組,什麼數組?指針數組。co

相關文章
相關標籤/搜索