C 关键字简介
在 C 语言中,关键字指的是 C 语言本身 “已经在使用” 的名字,因为我们在给变量、函数、结构体等命名时,是不能使用它们作为名字的。关键字是 C 语言预先保留的标识符,具有特殊的含义,不能用于其他用途(如变量名、函数名等)。
C 语言的标准在不断发展。最初的 C 语言标准(C90)定义了 32 个关键字。后续的 C99 标准(1999 年)新增了 5 个关键字,C11 标准(2011 年)又新增了 7 个关键字。C90 是最早的标准化版本,C99 和 C11 是对 C 语言的扩展和改进。目前,学习 C 语言通常会基于这些标准之一,而 C11 是最新被广泛采用的标准。
在最新版的 C 语言(即 C11)中,所有的关键字如下表所示。
| auto | break | case | char |
|---|---|---|---|
| const | continue | default | do |
| double | else | enum | extern |
| float | for | goto | if |
| inline | int | long | register |
| restrict | return | short | signed |
| sizeof | static | struct | switch |
| typedef | union | unsigned | void |
| volatile | while | _Bool | _Complex |
| _Imaginary | _Alignas | _Alignof | _Atomic |
| _Static_assert | _Noreturn | _Thread_local | _Generic |
示例:C 变量名使用关键字
#include <stdio.h>
int main(void)
{
int void = 2025;
printf("%d", void);
return 0;
}在编译代码时,会发现直接报错了。这是因为 void 是 C 语言的关键字,如果变量名使用了关键字,就会编译报错。
实际上,我们无需编译就可以发现代码是有问题的。VSCode 等工具会自动给有问题的代码标红,如下图所示。

C 关键字分类
从分类的角度来看,C 语言的关键字分为以下几大类:
- 数据类型关键字:用于声明数据类型,如 short、int、long、signed、unsigned、float、double、char、enum、struct、union、void。
- 控制语句关键字:用于编程控制,如 if、else、switch、case、default、goto、do、while、for、break、continue。
- 存储类型关键字:用于声明变量的存储类型,如 auto、extern、register、static。
- 其他关键字:用于编程的其他功能,如 const、sizeof、typedef、volatile。
- C99 标准新增关键字: inline、restrict、_Bool、_Complex、_Imaginary。
- C11 标准新增关键字: _Alignas、_Alignof、_Atomic、_Static_assert、_Noreturn、_Thread_local、_Generic。
C99 和 C11 新增的关键字是为了支持 C 语言的现代化发展,例如 inline 用于建议编译器进行内联优化,restrict 用于指针优化,_Bool 引入了布尔类型等。
提示: 本节列举了 C 语言常见关键字,只是方便小伙伴们查询,并不是叫大家记忆。所以大家别傻乎乎地一个个去记忆。实际上,对于这些关键字,等学到了后面,自然而然就会认得。就算不认得,等需要的时候再回到这里查一下就行了。
