C语言guanjianzi是什么?

99ANYc3cd6
预计阅读时长 13 分钟
位置: 首页 C语言 正文

C 语言关键字是 C 语言本身预先定义好的、具有特殊含义的单词,它们是构成 C 语言语法的基石,你不能将它们用作变量名、函数名或其他任何自定义的标识符。

c语言guanjianzi
(图片来源网络,侵删)

C 语言有多少个关键字?

C 语言的关键字数量会根据标准的不同而略有变化。

  • C89/C90 标准 (最经典、最常用): 32 个关键字
  • C99 标准: 新增了 5 个关键字,总共 37 个
  • C11 标准: 新增了 7 个关键字,总共 44 个
  • C17 标准: 对 C11 进行了勘误,没有新增关键字,依然是 44 个。

在实际开发中,C89/C90 的 32 个关键字 是必须掌握的核心,而 C99 和 C11 的新增关键字则在特定场景下非常有用。


C89/C90 的 32 个核心关键字

这是最基础、最常用的部分,几乎所有 C 语言程序都会用到。

关键字 中文含义 主要用途和分类
数据类型
int 整型 用于定义整型变量,如 int age = 25;
char 字符型 用于定义字符变量,如 char grade = 'A';
float 单精度浮点型 用于定义单精度浮点数(小数),如 float price = 19.99;
double 双精度浮点型 用于定义双精度浮点数,精度更高,如 double pi = 3.1415926;
void 空类型 表示函数无返回值。
表示函数无参数。
表示通用指针,如 void *ptr;
存储类型
auto 自动变量 默认的存储类型,通常省略,变量在进入作用域时创建,离开时销毁。
static 静态 修饰局部变量,使其生命周期延长至整个程序。
修饰全局变量,限制其作用域在当前文件内。
修饰函数,限制其作用域在当前文件内。
extern 外部声明 声明一个变量或函数是在其他文件中定义的,用于跨文件访问。
register 寄存器变量 建议编译器将变量存储在 CPU 寄存器中,以提高访问速度,现代编译器会自动优化,此关键字使用较少。
控制语句
if 如果 条件判断语句,如 if (score > 60) { ... }
else 否则 if 配合使用,如 if (score > 60) { ... } else { ... }
switch 开关 多路分支选择语句。
case 情况 switch 语句中的分支标签。
default 默认 switch 语句中,所有 case 都不匹配时执行的分支。
for 循环 for 循环语句,如 for (int i = 0; i < 10; i++) { ... }
while 当...时 while 循环语句,如 while (i < 10) { ... }
do do-while 循环语句,先执行一次循环体,再判断条件。
break 中断 跳出 switch 语句。
跳出当前循环(for, while, do-while)。
continue 继续 结束本次循环,直接进入下一次循环的条件判断。
goto 跳转 无条件跳转到程序中指定的标签。强烈不推荐使用,因为它会使代码结构混乱。
运算符相关
sizeof ...的大小 一个运算符,用于返回一个变量或数据类型所占的字节数,如 int size = sizeof(int);
复合数据类型
struct 结构体 将不同类型的数据组合成一个整体,如 struct Student { ... };
union 联合体 让不同的变量共享同一块内存空间。
enum 枚举 定义一组命名的整数常量,如 enum Color { RED, GREEN, BLUE };
指针相关
typedef 类型定义 为已有的数据类型创建一个新的别名,如 typedef int INTEGER;
const 常量 修饰一个变量为只读,其值在初始化后不能被修改,如 const int MAX = 100;

C99 新增的 5 个关键字

C99 标准引入了许多新特性,这 5 个关键字是其重要组成部分。

c语言guanjianzi
(图片来源网络,侵删)
关键字 中文含义 主要用途和分类
inline 内联 建议编译器将函数调用替换为函数体本身,以减少函数调用的开销,提高性能。
_Bool 布尔型 引入了真正的布尔类型,其值为 true (1) 或 false (0),通常使用头文件 <stdbool.h> 中的 booltruefalse 宏。
_Complex 复数 引入了复数数据类型,用于处理复数运算。
_Imaginary 虚数 引入了虚数数据类型,用于处理虚数运算。
restrict 限制 用于指针,告诉编译器该指针是访问某个数据对象的唯一方式,帮助编译器进行优化。

C11 新增的 7 个关键字

C11 标准主要增强了 C 语言对多线程和原子操作的支持。

关键字 中文含义 主要用途和分类
_Alignas 对齐 用于指定变量或结构体的内存对齐方式,可以提高某些硬件平台的访问效率。
_Alignof 对齐查询 一个运算符,用于查询类型或变量的对齐要求。
_Atomic 原子 用于声明原子类型,确保在多线程环境下对变量的操作是原子的,不会被其他线程打断。
_Generic 泛型 提供了一种基于参数类型选择不同函数的机制,类似于函数重载。
_Noreturn 不返回 声明一个函数不会返回到其调用者,通常用于 exit()abort() 这样的函数。
_Static_assert 静态断言 在编译时进行断言检查,如果条件不满足,编译会失败并显示指定的错误信息。
_Thread_local 线程局部存储 声明一个变量的存储期为线程的整个生命周期,每个线程都有自己独立的副本。

重要注意事项

  1. 区分大小写:C 语言的关键字都是小写的。IntIFFor 都不是关键字,而是合法的标识符(不推荐这样写,容易混淆)。
  2. 不能作为标识符:这是最重要的规则,你不能用 intcharfor 等作为变量名或函数名。
    // 错误示例
    int int = 10; // 错误,'int' 是关键字
    void for() { // 错误,'for' 是关键字
        // ...
    }
  3. 保留字:除了关键字,C 标准还保留了一些标识符(以下划线开头,后跟大写字母或另一个下划线)供标准库未来使用,虽然编译器可能不会报错,但强烈建议不要在你的代码中使用它们,
    • _EXIT
    • _BOOL
    • _ complex
标准 关键字数量 特点
C89/C90 32 核心基础,必须牢固掌握。
C99 37 引入了布尔类型、复合字面量、变长数组等,inline 是重要优化工具。
C11 44 增强了多线程支持(_Thread_local)和原子操作(_Atomic),引入了静态断言(_Static_assert)。

对于初学者来说,请务必首先熟练掌握 C89/C90 的 32 个关键字,随着学习的深入,再逐步了解和使用 C99 和 C11 的新增关键字。

-- 展开阅读全文 --
头像
hellowork c语言怎么学?
« 上一篇 今天
移动站m目录重复如何解决?
下一篇 » 今天

相关文章

取消
微信二维码
支付宝二维码

目录[+]