指針數組與數組指針


指針數組與數組指針

1.從字面意思來分析指針數組數組指針

(1)指針數組的實質就是一個(數組),只是這個數組中存在的所有元素是指針變量。(指針數組與數組沒有區別
(2)數組指針的實質是一個(指針),指針指向的是一個數組。

2.指針數組與數組指針表達式
(1)int *p[5]; int (*p)[5]; int *(p[5]);


(2) 一般規律: int *p;(p是一個指針);int p[5](p是一個數組)


總結:在定義一個符號時,關鍵在於首先要搞清楚需要定義的符號是什么?(找出誰是關鍵)
其次咋看誰跟核心最近,誰跟核心結合(找結合)


int *p[5];
分析:首先里面p是整個表達式的核心,而*號和[] 號同時出現,就需要通過符號的優先級來決定p到底先和誰結合,
上面這個表達式[]號的優先級比*的優先級要高。所以這里的p是先和[]號結合(從這個地方就能看出來當前表達式是
一個數組),然后再和*號結合(從這個地方可以看出當前表達式是一個指針數組),最后和int結合 所以這個表達
式 是一個名字叫做p的的指針數組,即其本質是一個數組。只是說這個數組中的所有元素是int *類型的數據。
綜上所述:p是一個數組,數組有五個元素大,數組中的元素是指針,指向所有的元素是int 整個符號就是一個數組指針。


int (*p)[5];
分析:首先里面p是整個表達式的核心,由於這里加入了一個()所以優先結合*p(即這里是一個指針),然后整個*p在於[]結合
組成是一個數組。
綜上所述:p是一個指針,指針指向一個數組,數組中有五個元素,數組中的元素是int型變量,當前表達式 是一個指針數組。

int *(p[5]);由於[]的優先級本身就比*號的優先級要高所以 當前表達式 等同於 int *p[5];

注意:符號的優先級到底有什么用?其實是決定當兩個符號一起作用的時候決定那個符號先運算,那個符號后運算
通過查c語言優先級表

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM