要理解乙個宣告,必須懂得其中的優先順序規則
優先順序規則:
a 從宣告的最左邊開始向右尋找,直到找到第乙個識別符號,然後按照下面的優先順序順序依次讀取
b 優先順序順序從高到低依次是:
b.1 宣告中被括號括起來的那部分(識別符號包含在括號中)當成乙個整體,先處理括號內的
b.2 字尾操作符:
圓括號():表示這是乙個函式
方括號:表示這是乙個陣列
b.3 字首操作符:
星號*:表示「指向...的指標」
c 如果const和(或)volatile關鍵字的後面緊跟著型別說明符(如int、long等),那麼它作用於型別說明符。在其他情況下,const和(或)volatile關鍵字作用於它左邊緊鄰的指標星號。此外,const在型別說明符前或型別說明後是一樣的
示例1:
將上述分析結果加以概括,這個宣告表示「next是乙個指標,它指向乙個函式,該函式返回另乙個指標,返回的指標指向乙個型別為char的唯讀指標」
示例2:
char *(* c[10])(int **p)
從最左邊開始向右尋找,直到找到第乙個識別符號c,c是乙個陣列,它的元素型別是函式指標,其所指向的函式返回乙個char型的指標。在陣列中被函式指標所指向的所有函式都把乙個指向指標的指標作為它們的唯一引數
示例3:
char * const src
src是指向char型的唯讀指標
char const *src
src是指向唯讀char的指標
容易造成混亂的是char const *src和const char *src的意思完全相同
參考:1、《c專家程式設計》
2、《征服c指標》
C宣告的優先順序規則
c宣告的優先順序規則 a 宣告從它的名字開始讀取,然後按照優先順序順序依次讀取 b 優先順序從高到低依次是 b.1 宣告中被括號括起來的那部分 b.2 字尾操作符 括號 表示這是乙個函式,而方括號 表示這是乙個陣列 b.3 字首操作符 星號 表示 指向 的指標 c 如果const和 或 volati...
C宣告的基本優先順序規則
c的宣告有時候很複雜,不了解規則的人可能會對複雜的c宣告極為反感,但是如果了解了c宣告的基本優先順序規則。那麼弄清楚c宣告就是易如反掌的事情了。c宣告的規則如下 a 宣告從它的名字開始讀取,然後按照優先順序順序依次讀取。b 優先順序從高到低依次是 b.1 宣告中被括號括起來的那部分 b.2 字尾操作...
C語言宣告優先順序規則
a 宣告從它的名字開始讀取,然後按照優先順序順序依次讀取。b 優先順序從高到低依次是 b.1 宣告中被括號括起來的部分 b.2 字尾操作符 括號 表示這是乙個 函式,而方括號表示這是乙個陣列 b.3 字首操作符 號表示 指向.的指標 c 如果const和 或 volatile關鍵字的後面緊跟型別說明...