c語言的宣告的理解方式

2022-09-04 08:33:10 字數 1015 閱讀 5804

以下內容取自c專家程式設計,基本上按照以下規則,可以方便的理解出c的宣告,typedef的語法是類似的。

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

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

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

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

b.2 字尾操作符:

括號 ()表示這是乙個函式,而方括號【】表示這是乙個陣列。

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

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

例1:char * const * (*next)();

1.找到變數名 next。

2.右邊沒有()和【】字尾,則往左看有個*字首,可以得到「next是乙個指向...的指標」

3.*next是被括號括起來的乙個整體,再往右看是()字尾,表明是乙個函式,則「next是乙個指向函式的指標」

4.往左看是個星號字首,表明「next是乙個指向返回值是指標的函式的指標」,即「next是乙個指向函式的指標,函式的返回值是指標」

5.剩下的都在左邊,const修飾左邊的*,表明是乙個不可變得指標,其型別為char。

6.連起來則是,「next是乙個指向函式的指標,該函式返回值是乙個指向不可變得char型指標的指標」。

例2:int(*fun())()

1.變數名是fun。

2.字尾為(),「fun是乙個函式。」

3.字首為*,「fun是乙個函式,其返回值是乙個指標」

4.字尾為(),「fun是乙個函式,其返回值是乙個指標,指標指向乙個函式」

5,字首是int型別說明符,「fun是乙個函式,其返回值是乙個指標,指標指向乙個函式,返回值為int型別」

int foo(void

)int(*foo1())()

void

main()

C 語言複雜宣告的理解

c語言常常因為宣告的語法問題而受到人們的批評,特別是涉及到函式指標的語法。c語言的語法力圖使宣告和使用相一致。對於簡單的情況,c語言的做法是很有效的,但是,如果情況比較複雜,則容易讓人混淆,原因在於,c語言的宣告不能從左至右閱讀,而且使用了太多的圓括號.但是找到正確的規則去理解,無論多複雜都可以搞清...

理解C C 語言的宣告語法 宣告

c c a.1宣告 一些宣告可能難以理解,特別是如果宣告幾個不同型別的名字或者那些指向函式指標的函式。例如在 10.1.1 171中,我們看到 int p,q 定義p為乙個 整型指標 型別的物件,q為乙個整型物件。在 10.1.2 173中,我們看到 double get analysis ptr ...

C語言中結構體的宣告方式

在c語言中結構體可以幫助我們自定義資料型別,使我們的程式設計趨於靈活.資料型別的本質是一塊固定大小的記憶體空間.下面我們介紹結構體的宣告方式 一,結構體宣告方式一 結構體宣告 在宣告的時候對結構體重命名 typedef struct teacherteacher 結構體型別引用 teacher t ...