1 关键字概述
C语言关键字是指被C语言编译器预定义并具有特殊含义的保留字。这些关键字在C语言中具有特殊的用途和语法意义,用于表示语言的各种结构、数据类型、控制流程和操作符等。C语言的关键字是有限的,每个关键字都有其特定的含义和用法。
由于这些关键字在C语言中具有特殊含义,因此在编写代码时,不能将关键字用作普通标识符的名称,如变量名、函数名等。否则,编译器将无法正确解析和处理这些标识符。关键字在C语言中起到了关键的作用,它们定义了语言的基本语法和结构,使得我们能够编写出符合C语言规范的程序。
2 关键字列表
2.1 C99标准前关键字
关键字 |
说明 |
auto |
声明自动变量 |
break |
跳出当前循环 |
case |
开关语句分支 |
char |
声明字符型变量或函数返回值类型 |
const |
定义常量,如果一个变量被 const 修饰,那么它的值就不能再被改变 |
continue |
结束当前循环,开始下一轮循环 |
default |
开关语句中的"其它"分支 |
do |
循环语句的循环体 |
double |
声明双精度浮点型变量或函数返回值类型 |
else |
条件语句否定分支(与 if 连用) |
enum |
声明枚举类型 |
extern |
声明变量或函数是在其它文件或本文件的其他位置定义 |
float |
声明浮点型变量或函数返回值类型 |
for |
一种循环语句 |
goto |
无条件跳转语句 |
if |
条件语句 |
int |
声明整型变量或函数返回类型 |
long |
声明长整型变量或函数返回值类型 |
register |
声明寄存器变量 |
return |
子程序返回语句(可以带参数,也可不带参数) |
short |
声明短整型变量或函数 |
signed |
声明有符号类型变量或函数 |
sizeof |
计算数据类型或变量长度(即所占字节数) |
static |
声明静态变量 |
struct |
声明结构体类型 |
switch |
用于开关语句 |
typedef |
用以给数据类型取别名 |
unsigned |
声明无符号类型变量或函数 |
union |
声明共用体类型 |
void |
声明函数无返回值或无参数,声明无类型指针 |
volatile |
说明变量在程序执行中可被隐含地改变 |
while |
循环语句的循环条件 |
2.2 C99标准新增关键字
关键字 |
说明 |
_Bool |
一种基本数据类型,用于表示布尔逻辑值,其值只有两种:0(假)或1(真) |
_Complex |
一种数据类型,用于创建复数 |
_Imaginary |
一种数据类型,用于创建虚数 |
inline |
用于函数定义的修饰符,编译器会将该函数的调用处直接展开为对应的函数体内容,而不需要进行函数调用的过程 |
restrict |
一种类型限定符(Type Qualifiers),用于告诉编译器,对象已经被指针所引用,不能通过除该指针外所有其他直接或间接的方式修改该对象的内容 |
2.3 C11标准新增关键字
关键字 |
说明 |
_Alignas |
用于指定最小对齐要求。它可以用于类型定义或变量定义,用来指定数据的对齐方式 |
_Alignof |
用来获取数据类型的对齐要求 |
_Atomic |
用于提供原子性操作。原子性意味着操作是不可中断的,要么完全执行,要么完全不执行,在执行过程中不会被其他线程或事件打断 |
_Generic |
它允许你在编译时根据表达式的类型来选择不同的代码分支。这个特性可以用来实现类似于模板函数的功能,但是不需要使用者关心具体的类型,这是因为类型信息在编译时就已经被确定了 |
_Noreturn |
用来指定函数永远不会返回。这有助于编译器优化代码和避免无意义的警告信息 |
_Static_assert |
它用于在编译时进行静态断言。如果断言条件为假,编译器将在编译时显示指定的错误消息,并且终止编译过程 |
_Thread_local |
用来声明线程本地存储的变量。这意味着每个线程都有其自己的变量副本,且该副本与其他线程隔离 |