a 宣告從它的名字開始讀取,然後按照優先順序順序依次讀取。
b 優先順序從高到低依次是:
b.1 宣告中被括號括起來的部分;
b.2 字尾操作符:括號()表示這是乙個 函式,而方括號表示這是乙個陣列;
b.3 字首操作符:*號表示「指向...的指標」
c 如果const和(或)volatile關鍵字的後面緊跟型別說明符(如int,long等),那它作用於型別說明符。在其他情況下,const和(volatile)關鍵
字作用於左邊緊鄰的指標星號.
例如:char * const *(*next)();
首先,看變數名"next",並注意到它直接被括號所擴住;
然後,把括號中的東西作為乙個整體,得出「next是乙個指向...的指標(即next是乙個指標)」; 剩下 char * const * ()
然後,根據優先順序,()高於*,即next是乙個指向函式的指標,該函式返回char * const*; 剩下: char * const*
然後,const修飾後面乙個*,即指標所指位址的內容不能改變,即返回乙個指向「唯讀的char *」指標;剩下char*
最後,即返回乙個指向唯讀的指向char的指標。
綜合起來,next指向乙個函式指標,該函式返回乙個指向唯讀的指向char的指標.
char * const * p; p是乙個指向指標的指標,const修飾*p,即*p的內容不能改變,p可以指向另外的位址,但不能通過*p改變*p的值,即可以有p = ..., 不能有*p = ...;*p為唯讀char*型別,對p進行2次解引用,則得到char 型別,即可以有**p= ...;綜合起來,即可以有p = ...; **p = ...;但不能有*p = ...;
C語言宣告的優先順序規則
a 宣告從它的名字開始讀取,然後按照優先順序順序依次讀取 b 優先順序從高到低依次是 b.1 宣告中被括號括起來的那部分 b.2 字尾操作符 括號 表示這是乙個函式,而方括號表示這是乙個陣列 b.3 字首操作符 星號 表示 指向.的指標 c 如果const和 或 volatile關鍵字的後面緊跟型別...
C語言宣告的優先順序規則
c語言宣告的有時候又些難以理解,如果不理解它的優先順序規則,就經常難以分析,下面列出其規則 a 宣告從它的名字開始讀取,然後按照優先順序順序依次讀取 b 優先順序從高到低依次是 b.1 宣告中被括號起來的那部分 b.2 字尾操作符 括號 表示這是乙個函式,方括號表示這是乙個陣列 b.3 字首操作符 ...
理解C語言宣告的優先順序規則
a 宣告從它的名字開始讀取,然後按照優先順序順序依次讀取 b 優先順序從高到低依次是 b.1 宣告中被括號括起來的那部分 b.2 字尾操作符 括號 表示這是乙個函式,而 表示這是乙個陣列 b.3 字首操作符 星號 表示 指向.的指標 c 如果const和 或 volatile關鍵字的後面緊跟型別說明...