《C程序設計語言》筆記 (十三) 參考手冊5
阿新 • • 發佈:2017-11-16
決定 指定 控制 就是 相同 ext case c編譯器 bre
語句
如果不特別聲明,語句都是順序執行的
9.1 帶標號語句
帶標號的語句 標識符:語句 case 常量表達式:語句 default:語句 由標識符構成的標號聲明了該標識符 標識符標號的唯一用途就是作為goto語句的跳轉目標 標號本身不會改變程序的控制流
9.2表達式語句
大多數表達式語句為賦值語句或函數調用
9.3符合語句
static類型的對象僅在程序開始執行前初始化一次
9.4 選擇語句
if(表達式) 語句 if(表達式) 語句 else 語句 switch(表達式) 語句
9.5循環語句
while(表達式) 語句 do 語句 while(表達式); for(表達式1;表達式2;表達式3)語句
9.6跳轉語句
goto 標識符; continue; break; return 表達式;
10 外部聲明
提供給C編譯器的處理輸入單元稱為翻譯單元
函數定義
函數定義 聲明說明符 聲明符 聲明表 復合語句 聲明說明符只能使用存儲類說明符extern 或static 函數可以返回算術類型 結構 聯合 指針或void類型的值,但不能返回函數或數組類型
外部聲明
外部聲明用於指定對象 函數 及其它標識符的特性 外部 表明他們位於函數外部,並且不直接與關鍵字extern連接 外部聲明的對象可以不指定存儲類,也可以指定為extern 或static 如果一個對象或函數聲明包含static說明符,則該標識符只具有內部連接
11作用域和連接
一個程序的所有單元不必同時進行編譯. 源文件可以保持在若幹個文件中,每個文件中可以包含多個翻譯單元,預先編譯過的例程可以從庫中進行加載. 程序間函數通訊可以通過調用和操作外部數據來實現 因此,我們需要考慮兩種類型的作用域 第一種是標識符的詞法作用域,它是體現標識符特性的程序文本區域 第二種是與具有外部連接的對象和函數相關的作用域,它決定各個單獨編譯的編譯單元中標識符之間的連接
詞法作用域
標識符可以在若幹個名字空間中使用而互不影響 如果位於不同的名字空間中,即使是在同一個作用域內,相同的標識符也可用於不同的目的 名字空間包括 對象 函數 類型定義名 枚舉常量 標號 結果標記 聯合標記 枚舉標記 結構和聯合成員 在聲明外部對象中,對象或函數標識符的詞法作用域從其聲明的結束位置開始,到所在翻譯單元結束為止 函數定義中形式參數的作用域從函數程序塊開始處開始,並貫穿整個函數. 函數聲明中形式參數的作用域到聲明符的末尾處結束 程序塊頭部中聲明的標識符的作用域是其所在的整個程序塊 標號的作用域是其所在的函數
連接
在翻譯單元中,具有內部連接的同一對象或函數標識符的所有聲明都應用同一實體 並且,該對象或函數對這個翻譯單元來說是唯一的 具有外部連接的同一對象或函數標識符的所有聲明也引用同一實體,並且該對象或函數是被整個程序共享 如果使用了static說明符,則標識符的第一個外部聲明將使得該標識符具有內部連接
《C程序設計語言》筆記 (十三) 參考手冊5