首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言問答

C 語言 32 個關鍵字完整解析:分類、語義與用法示例

     編輯:C 語言問答

C89 標準 32 個關鍵字分類總覽

分類關鍵字數量
數據類型char double enum float int long short signed struct union unsigned void12
控制語句if else switch case default for while do break continue goto return12
存儲類別auto register static extern4
其他const sizeof typedef volatile4

詳細語義與用法

一、數據類型關鍵字(12 個)

關鍵字含義典型用法備註
int基本整型,通常 16/32 位int age = 25;至少 16 位,short ≤ int ≤ long
short/short int短整型,至少 16 位short year = 2024;節省內存
long/long int長整型,至少 32 位long population = 8000000000L;C99 新增 long long(≥64 位)
signed有符號(默認)signed int temp = -10;可省略,int 默認有符號
unsigned無符號,範圍 0~2ⁿ-1unsigned int flags = 0xFFFFFFFF;位操作、標誌位首選
char字符型,實際是小整數(1 字節)char c = 'A';是否有符號由實現定義
float單精度浮點(IEEE-754 binary32)float pi = 3.14f;約 7 位十進制精度
double雙精度浮點(IEEE-754 binary64)double e = 2.718281828;約 15-16 位精度,默認浮點類型
long double擴展精度(通常 80/128 位)long double ld = 1.23456789012345L;C99 標準化,精度最高
struct結構體,聚合異構數據struct Point {int x,y;};成員順序固定,支持嵌套
union聯合體,共享內存區域union Data {int i; float f;};同一時間只能存一個成員
enum枚舉,命名整型常量集合enum Color {RED, GREEN, BLUE};底層是 int,可隱式轉換
void無類型/無返回值/通用指針void foo(void); void *p = malloc(10);不能聲明 void 變量

二、控制語句關鍵字(12 個)

關鍵字作用語法模式
if條件分支if (expr) stmt [else stmt]
elseif 的備選分支同上
switch多路選擇(整型表達式)switch (expr) { case const: ... default: ... }
caseswitch 分支標簽case 1: ...
defaultswitch 兜底分支default: ...
for計數/通用循環for (init; cond; inc) stmt
while先判斷後執行循環while (cond) stmt
do先執行後判斷循環do stmt while (cond);
break跳出最近循環或 switchbreak;
continue結束本輪循環,進入下一輪判斷continue;
goto無條件跳轉到標號goto label; ... label: stmt;
return函數返回,可帶表達式return expr;

三、存儲類別關鍵字(4 個)

關鍵字作用域/生存期/鏈接典型場景
auto塊作用域、自動生存期、無鏈接(默認)局部變量,極少顯式寫
register建議寄存器分配,不可取地址熱點循環計數器(現代編譯器自動優化)
static靜態生存期(程序全期),文件/塊作用域,內部鏈接(文件級)模塊私有狀態、函數內保持值、單例模式
extern聲明外部鏈接實體(變量/函數),定義在別處跨文件共享全局變量、頭文件聲明函數

四、其他關鍵字(4 個)

關鍵字語義核心用法
const只讀限定,編譯器可優化、放入只讀段const int MAX = 100; const int *p; int *const q;
sizeof編譯期運算符,返回類型/表達式大小(字節),類型 size_tsizeof(int)、sizeof arr、sizeof expr(不求值)
typedef類型別名,不創建新類型typedef int Int32; typedef struct Node* List;
volatile易變限定,禁止編譯器優化訪問,每次從內存讀寫硬件寄存器映射、信號處理器共享變量、多線程標誌位

C99/C11 新增關鍵字(補充)

  • inline(C99):建議內聯展開
  • restrict(C99):指針無別名優化提示
  • _Bool、_Complex、_Imaginary(C99):布爾、複數類型
  • _Alignas、_Alignof、_Atomic、_Generic、_Noreturn、_Static_assert、_Thread_local(C11):對齊、原子、泛選、無返回、靜態斷言、線程局部存儲

速記口訣

類型十二:char double enum float int long
         short signed struct union unsigned void
控制十二:if else switch case default for
         while do break continue goto return
存儲四個:auto register static extern
其他四個:const sizeof typedef volatile

避坑提醒

  • 關鍵字不能作標識符:變量、函數、標號、標籤名均不可用關鍵字。
  • sizeof 是運算符非函數:類型操作數需括號 sizeof(int),表達式可省略 sizeof x,不求值副作用。
  • const 與指針組合:const int *p(指向常量指針,數據不可改)、int *const p(常量指針,指針不可改)、const int *const p(雙重 const)。
  • volatile 不等於原子/線程安全:僅防編譯器優化,多線程同步需 _Atomic/鎖/內存屏障。

總結

32 個關鍵字構成 C 語言的骨架。建議:打印上表貼工位,**按分類理解語義、寫最小示例、對照汇编觀察編譯器行為**。掌握關鍵字組合語義(如 static inline、const volatile、extern "C"),是閱讀內核、庫源碼、編寫高質量 C 代碼的前提。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved