C語言37個關鍵字
一、相關基礎知識
ANSI:美國國家標准學會(AMERICAN NATIONAL STANDARDS INSTITUTE: ANSI)成立於1918年。
關鍵字:是由系統定義的,不能重新做其他定義的字符,且每個關鍵字已經賦予了不同的意義,讓編程者能夠使用來告訴編譯器完成不同的工作PS:C語言嚴格區分大小寫,int!=INT,可以定義int INT;
二、具體內容
原來的K&R關鍵字共27個:auto double int struct break else long switch case register typedef char extern return union float short unsigned continue for default goto sizeof do if
while static
ISO/ANSI C90新增5個:enum signed void volatile const
C99新增5個: inline restrict _Bool _Complex _Imaginary
總共27+5+5=37個
根據關鍵字的作用,可以將關鍵字大致分為數據類型關鍵字和流程控制關鍵字兩大類:
一、數據類型關鍵字(20個)
基本數據類型(5個)
1、void:聲明函數無返回值或無參數,聲明無類型指針,顯式丟棄運算結果
2、char:字符型類型數據,屬於整型數據的一種
3、int:整型數據,通常為編譯器指定的機器字長
4、float:單精度浮點型數據,屬於浮點數據的一種
5、double:雙精度浮點型數據,屬於浮點數據的一種
類型修飾關鍵字(4個)
6、short:修飾int,短整型數據,可省略被修飾的int。
7、long:修飾int,長整形數據,可省略被修飾的int。
8、signed:修飾整型數據,有符號數據類型
9、unsigned:修飾整型數據,無符號數據類型
復雜類型關鍵字(5個)
10、struct:結構體聲明
11、union:共用體聲明
12、enum:枚舉聲明
13、typedef:聲明類型別名
14、sizeof:得到特定類型或特定類型變量的大小
存儲級別關鍵字(6個)
15、auto:指定為自動變量,由編譯器自動分配及釋放。通常在棧上分配
16、static:指定為靜態變量,分配在靜態變量區,修飾函數時,指定函數作用域為文件內部
17、register:指定為寄存器變量,建議編譯器將變量存儲到寄存器中使用,也可以修飾函數形參,建議編譯器通過寄存器而不是堆棧傳遞參數
18、extern:指定對應變量為外部變量,即在另外的目標文件中定義,可以認為是約定由另外文件聲明的韻蟮囊桓觥耙 謾?
19、const:與volatile合稱“cv特性”,指定變量不可被當前線程/進程改變(但有可能被系統或其他線程/進程改變)
20、volatile:與const合稱“cv特性”,指定變量的值有可能會被系統或其他進程/線程改變,強制編譯器每次從內存中取得該變量的值
二、流程控制關鍵字(12個)
跳轉結構(4個)
21、return:用在函數體中,返回特定值(或者是void值,即不返回值)
22、continue:結束當前循環,開始下一輪循環,執行到此只結束本輪循環,繼續新一輪循環
23、break:跳出當前循環或switch結構,執行到此跳出所有的循環,即結束for語句等
24、goto:無條件跳轉語句
分支結構(5個)
25、if:條件語句
26、else:條件語句否定分支(與if連用)
27、switch:開關語句(多重分支語句)
28、case:開關語句中的分支標記
29、default:開關語句中的“其他”分治,可選。
循環結構(3個)
30、for:for循環結構,for(1;2;3)4;的執行順序為1->2->4->3->2...循環,其中2為循環條件
31、do:do循環結構,do 1 while(2);的執行順序是1->2->1...循環,2為循環條件
32、while:while循環結構,while(1) 2;的執行順序是1->2->1...循環,1為循環條件
(以上循環語句,當循環條件表達式為真則繼續循環,為假則跳出循環。)
PS:C語言把0作為false假,非0為true真
三、C99新增(5個)
33、inline:內聯函數,是為了解決C 預處理器宏存在的問題所提出一種解決方案,用來提高函數使用效率。內聯函數使用inline關鍵字定義,並且函數體和申明必須結合在一起, 否則編譯器將他作為普通函數對待。
34、restric:關鍵字只用於限定指針;該關鍵字用於告知編譯器,所有修改該指針所指向內容的操作全部都是基於(base on)該指針的,即不存在其它進行修改操作的途徑;這樣的后果是幫助編譯器進行更好的代碼優化,生成更有效率的匯編代碼。
35、Bool:布爾類型,用來表示真或假,零表示假,非零表示真。所有非零的數賦值給布爾型變量,最終的值還是1,包含標准頭文件 stdbool.h 后,我們可以用 bool 代替 _Bool ,true 代替 1 ,false 代替 0
36、_Complex:表示復數,復數類型包括一個實部和一個虛部
37、_Imaginary:表示虛數,虛數類型沒有實部,只有虛部
三、分析總結
四、實例測試代碼
