從接觸c語言到現在也有好幾年了,這個在閱讀esc32原始碼的時候感覺自己差的還是很多的。裡面運用的大量的巨集定義,這樣就加大的閱讀的難度,但是這樣就大大方便的維護,這應該是乙個平衡問題吧。今天就c語言關鍵字簡單的總結一下,試問:c語言有多少個關鍵字呢?
關鍵字 意義
auto
宣告自動變數,預設使編譯器一般預設為auto
break
跳出當前迴圈
int宣告整形變數
register
宣告暫存器變數
double
宣告雙精度變數
const
宣告唯讀變數
long
宣告長整型變數
volatile
說明變數在程式執行中可被隱含改變
char
宣告字元型變數
typedef
用以給資料型別去別名
float
宣告浮點型變數
extern
宣告變數是在其他檔案中宣告
short
宣告短整型變數
return
子程式返回語句
signed
宣告有符號型別變數
void
宣告函式無返回值或無引數,宣告空型別指標
unsigned
宣告無符號型別變數
continue
結束當前迴圈,開始下一輪迴圈
struct
宣告結構體變數 do
迴圈語句的迴圈體
union
宣告聯合體資料型別
while
迴圈語句的迴圈條件
enum
宣告列舉型別 if
條件語句
static
宣告靜態變數
else
條件語句否定分支
switch
用於開關語句
for一種迴圈語句
case
開關語句分支
goto
無條件跳轉語句
default
開關語句中的「其他分支」
sizeof
計算機物件所在記憶體空間大小
在弄清上面這些關鍵字之前首先需要明白兩個概念:
什麼是定義?什麼是宣告?它們有何區別?
定義:是(編譯器)建立乙個物件,為這個物件分配一塊記憶體並給它取上乙個名字,這個名字就是我們經常所說的變數名。
宣告:1.告訴編譯器,這個名字已經匹配一塊記憶體上了,
2.告訴編譯器,這個名字我先預定了,別的地方不能用它來作為變數名了。
定義跟宣告最重要的區別:定義建立了物件並為這個物件分配了記憶體,宣告沒有分配記憶體。
1> 最快的關鍵字——register
register:這個關鍵字請求編譯器盡可能的將變數存在cpu內部暫存器中為不是通過記憶體定址訪問,它宣告的變數在程式中使用頻率較高。
雖然暫存器的速度非常快,但是使用register修飾符也有限制的:register變數必須是乙個單個的值,並且其長度用應小於或等於整型長度。而且register變數不能用取址運算子「&」來獲取register變數的位址
2> 最冤枉的關鍵字——sizeof
sizeof是關鍵字不是函式,(我一直認為是函式,沒想到確實關鍵字)為了證明它是關鍵字,我們借助編譯器確 定它的身份,看下面的例子:
注意:這個關鍵字更執行環境,硬體平台有關,所以判斷數值之前必須考慮硬體平台,最好的辦法就是基於相應的平台加以測試。
3> 最易變的關鍵字——volatile
volatile是易變的、不穩定的意思。用它修飾的變數表示可以被某些編譯器未知的因素更改,比如作業系統、硬體或者其他執行緒等,遇到這個關鍵字宣告的變數,編譯器對訪問該變數的**就不再進行優化,從而可以提供對特殊位址的穩定訪問。
4> 最會帶帽子的關鍵字——extern
extern,外面的、外來的意思。extern可以置於變數或者函式前,以標示變數或函式的定義在別的檔案中,下面的**用到的這些變數或函式是外來的,不是本文定義的,提示編譯器遇到此變數和函式時在其他模組中尋找其定義。
有些是我以前就用到的,只是沒有深究,像基本資料型別的關鍵字這些就不用說了,基本會程式設計的人都懂。其中還有幾個關鍵字如:struct、enum、typedef等這些也大量遇到,尤其這一些大型的程式中這些定義太常見,可以自己還是不敢用,主要是沒有深入理解。
C語言關鍵字
c語言關鍵字 在檔案範圍的教訓和關鍵字,你知道靜態變數保持他們的價值觀,甚至不在他們超出範圍的破壞。比如說呢。int generateid int main this program prints 01 2 請注意,s nid一直保持它的價值的跨多個函式呼叫。static關鍵字有另一種意思當應用到全...
C語言關鍵字
關鍵字就是已被c語言本身使用,不能作其它用途使用的字。例如關鍵字不能用作變數名 函式名等 由ansi標準定義的c語言關鍵字共32個 auto double int struct break else long switch case enum register typedef char extern...
c語言關鍵字
c 語言標準定義的32 個關鍵字 1 auto 宣告自動變數,預設時編譯器一般預設為auto int 宣告整型變數 double 宣告雙精度變數 雙精度浮點型 long 宣告長整型變數 char 宣告字元型變數 float 宣告浮點型變數 單精度浮點型 6.1 float的有效位通常有 位,指的是小...