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 | 用来声明线程本地存储的变量。这意味着每个线程都有其自己的变量副本,且该副本与其他线程隔离 |