C專家程式設計 三 C語言宣告是如何形成的

2021-07-24 08:17:36 字數 835 閱讀 6223

c語言宣告是如何形成的

讓我們先來看一些c語言的術語以及一些能組合成乙個宣告的牟.獨語法成份。其中乙個 非常重要的成份就是宣告器(declarator)——它是所有宣告的核心。簡單地說,宣告器就是標 識符以及與它組合在一起的任何指標、函式括號、陣列下標等,如表3-1所示。為方便起見, 我們把初始化內容(initializer)也放到裡面,並分類表示。

乙個宣告由表3-2所示的各個部分組成(並非所有的組合形式都是合法的,但這個表描 述了我們進一步討論所要用到的詞彙)。宣告確定了變數的基本型別以及初始值(如果有的 話)。

讓我們看一下如果你使用這些部件來構造乙個宣告,情況能夠複雜到什麼程度。同時要 記住,在合法的宣告中存在限制條件。你不可以像下面那樣做:

•函式的返回值不能是乙個函式,所以像fbo〇〇這樣是非法的。

•函式的返回值不能是乙個陣列,所以像foo()這樣是非法的。

•陣列裡面不能有函式,所以像foo〇這樣是非法的。

但像下面這樣則是合法的:

•函式的返回值允許是乙個函式指標,如:int(*fun())();

•函式的返回值允許是乙個指向陣列的指標,如:int(*foo〇)

•陣列裡面允許有函式指標,如im(*fo〇m〇

•陣列裡面允許有其他陣列,所以你經常能看到intfc〇

C專家程式設計 Chapter3 C語言宣告

char j 20 j是乙個指向陣列的指標,陣列內有20個char元素 j char 20 malloc 20 如果把星號兩邊看上去多餘的括號拿掉,變成非法的。const int grape int const grape int const grape 最後一種情況下指標是唯讀的,而兩外兩種情況下...

C專家 分析C語言宣告 關於列舉

列舉 enum 通過一種簡單的途徑,把一串名字與一串整型值聯絡在一起。對於像c這樣的弱型別語言而言,很少有什麼事只能靠列舉來完成而用 define不能解決的。所以,在大多數早期的k r c編譯器中,都省掉了列舉。但是列舉在其它大多數語言中都存在,所以c語言最終也實現了它。現在,對於列舉的一般形式,你...

C語言宣告

怎樣定義和宣告全域性變數和函式最好。首先,儘管乙個全域性變數或函式可以有多處宣告但是定義卻最多隻允許出現一次,對於全域性變數,定義是真正分配空間並賦初值的宣告,對於函式,定義是提供函式體的宣告。例如 這些是宣告 extern int i extern int f 而這些是定義 int i 1 int...