C語言宣告優先順序規則

2021-05-23 16:54:25 字數 852 閱讀 4065

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關鍵字的後面緊跟型別說明...