C語言 如何理解宣告(宣告的優先順序順序)

2022-09-11 09:18:07 字數 850 閱讀 4698

a  宣告從它的名字開始讀取,然後按照優先順序順序依次讀取。

b  優先順序從高到低依次是:

b. 1 宣告中被括號括起來的那部分

b. 2 字尾操作符:

括號()表示這是乙個函式,而

方括號表示這是乙個陣列。

b. 3 字首操作符:星號*表示「指向...的指標」

c  如果const和(或)volatile關鍵字的後面緊跟型別說明符(如int,long等),那麼它作用於型別說明符。在其他情況下,const和(或)volatile關鍵字作用於它左邊緊鄰的指標星號。

把上述分析結果加以概括,這個宣告表示「next是乙個指標,它指向乙個函式,該函式返回另乙個指標,該指標指向乙個型別為char的常量指標」。

在圖中忽略了typedef以簡化宣告。如果宣告中有typedef,就把它翻譯成沒有typedef的樣子。如果它類似於「typedef p a...」這種形式,就把宣告中所有型別為「a...」的東西用「p」來代替。

在分析宣告時,需要逐漸把已經處理過的片段「去掉」,這樣便能知道還需要分析多少內容。再次提醒,記住const表示「唯讀」,並不能因為它的意思是常量就認為它表示的就是常量。

拼在一起,讀作:

「next是乙個指向函式的指標,該函式返回另乙個指標,該指標指向乙個唯讀的指向char的指標」。

現在讓我們試乙個更複雜的例子。

「c是乙個陣列[0..9],它的元素型別是函式指標,其所指向的函式的返回值是乙個指向char的指標」。

參考書籍——《c專家程式設計》

理解C語言宣告的優先順序規則

a 宣告從它的名字開始讀取,然後按照優先順序順序依次讀取 b 優先順序從高到低依次是 b.1 宣告中被括號括起來的那部分 b.2 字尾操作符 括號 表示這是乙個函式,而 表示這是乙個陣列 b.3 字首操作符 星號 表示 指向.的指標 c 如果const和 或 volatile關鍵字的後面緊跟型別說明...

C語言宣告優先順序規則

a 宣告從它的名字開始讀取,然後按照優先順序順序依次讀取。b 優先順序從高到低依次是 b.1 宣告中被括號括起來的部分 b.2 字尾操作符 括號 表示這是乙個 函式,而方括號表示這是乙個陣列 b.3 字首操作符 號表示 指向.的指標 c 如果const和 或 volatile關鍵字的後面緊跟型別說明...

理解C語言複雜宣告的優先順序規則

從變數名看起,先往右,再往左,碰到乙個圓括號就調轉閱讀的方向 括號內分析完就跳出括號,還是按先右後左的順序,如此迴圈,直到整個宣告分析完。int func int p 首先找到變數名func,外面有一對圓括號,而且左邊是乙個 號,這說明func是乙個指標 然後跳出這個圓括號,先看右邊,又遇到圓括號,...