C語言關鍵字

2021-08-01 08:52:57 字數 3082 閱讀 8777

關鍵字名稱

作用void

宣告函式無返回值或無引數,宣告無型別指標,顯式丟棄運算結果。

char

字元型型別資料,屬於整型資料的一種。

int

整型資料,通常為編譯器指定的機器字長。

float

單精度浮點型資料,屬於浮點資料的一種,小數點後儲存6位。

double

雙精度浮點型資料,屬於浮點資料的一種,比float儲存的精度高,小數點後儲存15/16位。

關鍵字名稱

作用short

修飾int,短整型資料,可省略被修飾的int。

long

修飾int,長整形資料,可省略被修飾的int。

signed

修飾整型資料,有符號資料型別。

unsigned

修飾整型資料,無符號資料型別。

關鍵字名稱

作用struct

結構體宣告。

union

共用體宣告。

enum

列舉宣告。

typedef

宣告型別別名。

sizeof

得到特定型別或特定型別變數的大小。

關鍵字名稱

作用auto

指定為自動變數,由編譯器自動分配及釋放。通常在棧上分配。

static

指定為靜態變數,分配在靜態變數區,修飾函式時,指定函式作用域為檔案內部。

register

指定為暫存器變數,建議編譯器將變數儲存到暫存器中使用,也可以修飾函式形參,建議編譯器通過暫存器而不是堆疊傳遞引數。

extern

指定對應變數為外部變數,即在另外的目標檔案中定義,可以認為是約定由另外檔案宣告的。

const

與volatile合稱「cv特性「,指定變數不可被當前執行緒/程序改變(但有可能被系統或其他執行緒/程序改變)

volatile

與const合稱「cv特性」,指定變數的值有可能會被系統或其他程序/執行緒改變,強制編譯器每次從記憶體中取得該變數的值。

volatile關鍵字是一種型別修飾符,用它生命的型別變數不經過賦值也可以被某些編譯器未知的因素更改。例如作業系統、硬體或者其他執行緒等。遇到這個關鍵字宣告的變數,編譯器對訪問該變數的**就不再進行優化,執行部件每次都會從該變數相應的記憶體單元中取出其值,從而可以提供對特殊位址的穩定訪問

關鍵字名稱

作用return

用在函式體中,返回特定值(或者是void值,即不返回值)。

continue

結束當前迴圈,開始下一輪迴圈。

break

跳出當前迴圈或switch結構。

goto

無條件跳轉語句。

關鍵字名稱

作用if

條件語句。

else

條件語句否定分支(與if連用)。

switch

開關語句(多重分支語句)。

case

開關語句中的分支標記。

default

開關語句中的「其他」分治,可選。

關鍵字名稱

作用for

for迴圈結構,for(1;2;3)4;的執行順序為1->2->4->3->2…迴圈,其中2為迴圈條件。

do do迴圈結構,do 1 while(2);的執行順序是1->2->1…迴圈,2為迴圈條件。

while

while迴圈結構,while(1) 2;的執行順序是1->2->1…迴圈,1為迴圈條件, 以上迴圈語句,當迴圈條件表示式為真則繼續迴圈,為假則跳出迴圈。

2023年12月16日,iso推出了c99標準,該標準新增了5個c語言關鍵字:inline, restrict, _bool ,_complex ,_imaginary(注意bool 從來不是c語言的關鍵字)。

關鍵字名稱

作用_bool

bool型別變數, 等價於 unsigned char . 只有0和1

_complex

對於c99 標準定義,存在 float _complex, double _complex,long double _complex 複數型別

_imaginary

虛數型別。_complex 複數型別的虛部。例如 10.0i, 10.8if 等等。這個關鍵字在vs 上沒有實現。其實我也覺得沒有必要。和_complex有重疊

inline

內聯函式,從c++中引入的概念。就是將小函式直接嵌入到**中。c的**損耗在於函式的進出棧。要是可以推薦用內聯函式替代巨集。巨集能不用就不用。函式什麼的時候不要加inline 需要加extern,定義的時候需要加inline

restrict

這是很裝逼的關鍵字用於編譯器優化。關鍵字restrict只用於限定指標;該關鍵字用於告知編譯器,所有修改該指標所指向內容的操作全部都是基於(base on)該指標的,即不存在其它進行修改操作的途徑;這樣的後果是幫助編譯器進行更好的**優化,生成更有效率的彙編**。

2023年12月8日,iso發布c語言的新標準c11,該標準新增了7個c語言關鍵字:_alignas ,_alignof ,_atomic, _static_assert ,_noreturn ,_thread_local ,_generic。

關鍵字名稱

作用_alignas

記憶體對齊的操作符。需要和_alignof配合使用,指定結構的對齊方式

_alignof

得到型別和變數的對齊方式

_atomic

原子操作, 原子鎖。gcc 很早就支援

_static_assert

編譯器期間斷言,當 #if #error 搞完畢(預編譯)之後,編譯器斷言。assert是執行時斷言。用的時候看具體的需求

_noreturn

修飾函式,絕對不會有返回值。_noreturn 宣告的函式不會返回。引入此新的函式修飾符有兩個目的:消除編譯器對沒有return的函式的警告。允許某種只針對不返回函式的優化

_thread_local

_thread_local是新的儲存類修飾符,限定了變數不能在多執行緒之間共享

_generic

這個比較叼,c的泛函機制。 高階函式巨集

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的有效位通常有 位,指的是小...