- C 编程教程
- C - 首页
- C 基础
- C - 概述
- C - 特性
- C - 历史
- C - 环境设置
- C - 程序结构
- C - Hello World
- C - 编译过程
- C - 注释
- C - 词法单元
- C - 关键字
- C - 标识符
- C - 用户输入
- C - 基本语法
- C - 数据类型
- C - 变量
- C - 整数提升
- C - 类型转换
- C - 类型强制转换
- C - 布尔类型
- C 中的常量和字面量
- C - 常量
- C - 字面量
- C - 转义序列
- C - 格式说明符
- C 语言中的运算符
- C - 运算符
- C - 算术运算符
- C - 关系运算符
- C - 逻辑运算符
- C - 位运算符
- C - 赋值运算符
- C - 一元运算符
- C - 自增和自减运算符
- C - 三元运算符
- C - sizeof 运算符
- C - 运算符优先级
- C - 其他运算符
- C 语言中的决策
- C - 决策
- C - if 语句
- C - if...else 语句
- C - 嵌套 if 语句
- C - switch 语句
- C - 嵌套 switch 语句
- C 语言中的循环
- C - 循环
- C - while 循环
- C - for 循环
- C - do...while 循环
- C - 嵌套循环
- C - 无限循环
- C - break 语句
- C - continue 语句
- C - goto 语句
- C 语言中的函数
- C - 函数
- C - 主函数
- C - 按值调用函数
- C - 按引用调用函数
- C - 嵌套函数
- C - 可变参数函数
- C - 用户定义函数
- C - 回调函数
- C - 返回语句
- C - 递归
- C 语言中的作用域规则
- C - 作用域规则
- C - 静态变量
- C - 全局变量
- C 语言中的数组
- C - 数组
- C - 数组的特性
- C - 多维数组
- C - 将数组传递给函数
- C - 从函数返回数组
- C - 可变长数组
- C 语言中的指针
- C - 指针
- C - 指针和数组
- C - 指针的应用
- C - 指针运算
- C - 指针数组
- C - 指针到指针
- C - 将指针传递给函数
- C - 从函数返回指针
- C - 函数指针
- C - 指向数组的指针
- C - 指向结构体的指针
- C - 指针链
- C - 指针与数组
- C - 字符指针和函数
- C - 空指针
- C - void 指针
- C - 悬空指针
- C - 解引用指针
- C - 近、远和巨大指针
- C - 指针数组的初始化
- C - 指针与多维数组
- C 语言中的字符串
- C - 字符串
- C - 字符串数组
- C - 特殊字符
- C 结构体和联合体
- C - 结构体
- C - 结构体和函数
- C - 结构体数组
- C - 自引用结构体
- C - 查找表
- C - 点 (.) 运算符
- C - 枚举 (或 enum)
- C - 结构体填充和打包
- C - 嵌套结构体
- C - 匿名结构体和联合体
- C - 联合体
- C - 位域
- C - Typedef
- C 语言中的文件处理
- C - 输入和输出
- C - 文件 I/O(文件处理)
- C 预处理器
- C - 预处理器
- C - 编译指示
- C - 预处理器运算符
- C - 宏
- C - 头文件
- C 语言中的内存管理
- C - 内存管理
- C - 内存地址
- C - 存储类别
- 其他主题
- C - 错误处理
- C - 可变参数
- C - 命令执行
- C - 数学函数
- C - static 关键字
- C - 随机数生成
- C - 命令行参数
- C 编程资源
- C - 问答
- C - 快速指南
- C - 速查表
- C - 有用资源
- C - 讨论
C - 关键字
关键字是在编译器中具有特殊含义的预定义词,它们不能用于任何其他目的。根据 C99 标准,C 语言有 32 个关键字。关键字不能用作标识符。
下表列出了 C 语言中所有可用关键字(保留字)
auto | double | int | struct |
break | else | long | switch |
case | enum | register | typedef |
char | extern | return | union |
continue | for | signed | void |
do | if | static | while |
default | goto | sizeof | volatile |
const | float | short | unsigned |
所有 C 语言中的关键字都使用小写字母,尽管在 C 语言中新添加的关键字在其中包含大写字母。C 语言是区分大小写的语言。因此,int 是一个关键字,但 INT 或 Int 未被识别为关键字。从 C99 开始引入的新关键字以下划线字符开头。编译器检查源代码中所有关键字的语法正确性,然后将其转换为机器代码。
C 关键字示例
在以下程序中,我们使用关键字作为标识符,即作为用户定义函数的名称,这将导致编译错误。
#include <stdio.h> void register(int, int); int main () { /* variable definition: */ int a=5, b=7; register(a,b); return 0; } void register(int a, int b) { printf("%d", a+b); }
错误
main.c:3:15: error: expected identifier or '(' before 'int' 3 | void register(int, int); | ^~~ main.c: In function 'main': main.c:8:14: error: expected ')' before ',' token 8 | register(a,b); | ^ | ) main.c: At top level: main.c:12:15: error: expected identifier or '(' before 'int' 12 | void register(int a, int b) | ^
错误的原因是我们使用关键字 register 作为用户定义函数的名称,这是不允许的。
ANSI C 版本有 32 个关键字。这些关键字是程序逻辑的基本元素。这些关键字可以大致分为以下类型:
- 基本数据类型
- 用户定义类型
- 存储类型
- 条件语句
- 循环和循环控制
- 其他
让我们讨论每类关键字。
基本类型 C 关键字
这些关键字用于变量声明。C 语言是一种静态类型语言,必须声明要使用的变量。C 语言中的变量使用以下关键字声明
int | 声明一个整型变量 |
long | 声明一个长整型变量 |
short | 声明一个短整型变量 |
signed | 声明一个有符号变量 |
double | 声明一个双精度变量 |
char | 声明一个字符型变量 |
float | 声明一个浮点型变量 |
unsigned | 声明一个无符号变量 |
void | 指定 void 返回类型 |
用户定义类型 C 关键字
C 语言允许您根据需要定义新的数据类型。用户定义类型具有一个或多个基本类型元素。
以下关键字用于用户定义的数据类型:
struct | 声明一个结构体类型 |
typedef | 创建一个新的数据类型 |
union | 声明一个联合体类型 |
enum | 声明一个枚举类型 |
存储类型 C 关键字
以下关键字集称为存储说明符。它们指示变量存储在内存中的位置。变量的默认存储类型是 auto,尽管您可以要求编译器以特定的存储属性形成变量。
auto | 指定自动存储类别 |
extern | 声明变量或函数 |
static | 指定静态存储类别 |
register | 指定寄存器存储类别 |
条件语句 C 关键字
以下关键字集可帮助您在程序中设置条件逻辑。用 if 和 else 关键字表示的条件逻辑为条件提供两种替代操作。对于多分支,请使用switch – case结构。在 C 语言中,汇编程序中的跳转操作由goto 关键字实现。
goto | 跳转到带标签的语句 |
if | 开始一个 if 语句 |
else | 在 if 条件为假时执行 |
case | 标记 switch 语句中的语句 |
switch | 开始一个 switch 语句 |
default | 指定 switch 语句中的默认语句 |
循环和循环控制 C 关键字
重复或迭代是算法的一个重要方面。C 语言提供了形成循环的不同替代方案,以及控制循环行为的关键字。每个关键字都允许您形成具有不同特性和用途的循环。
For | 开始一个for 循环 |
do | 开始一个do-while 循环 |
while | 开始一个while 循环 |
continue | 跳过循环的一次迭代 |
break | 终止循环或 switch 语句 |
其他 C 关键字
以下其他关键字也极其重要
const | 指定一个常数值 |
Sizeof | 确定数据类型的尺寸 |
Volatile | 编译器变量的值可能随时更改 |
在 C99 版本中,增加了五个关键字:
- _Bool
- _Complex
- _Imaginary
- inline
在 C11 中,增加了七个关键字
- _Alignas
- _Alignof
- _Atomic
- _Generic
- _Noreturn
- _Static_assert
当 C23 标准发布时,它将引入 14 个新关键字:
- alignas
- alignof
- 布尔型
- 编译时常量
- 假
- 空指针
- 静态断言
- 线程局部
- 真
- typeof
- typeof_unqual
- _Decimal128
大多数最近保留的关键字以一个下划线后跟一个大写字母开头,因为现有的程序源代码不应该使用这些标识符。
使用关键字时必须牢记以下几点
- 关键字由编程语言保留,并具有预定义的含义。它们不能用作变量或函数的名称。
- 每个关键字都必须根据其使用规定的语法使用。如果违反语法,编译器将报告编译错误。
- C 是一种最小的计算机语言之一,其 ANSI C 版本只有 32 个关键字,尽管之后添加了一些关键字。