## C语言关键字详解
简介
C语言关键字是预定义的保留字,它们具有特殊的含义,用于构建程序的结构、控制程序的流程以及定义数据类型等。 C语言关键字不能用作标识符(变量名、函数名等)。 理解和熟练掌握C语言关键字对于编写有效的C程序至关重要。 本文将详细列举并解释C语言关键字。### 一、 数据类型关键字
`void`
: 表示空类型,例如声明一个不返回任何值的函数 `void myFunction();`,或者声明一个泛型指针 `void
ptr;`。
`char`
: 表示字符类型,用于存储单个字符。
`short`
: 表示短整型,通常占用2个字节。
`int`
: 表示整型,通常占用4个字节。
`long`
: 表示长整型,通常占用4或8个字节,取决于编译器和操作系统。
`long long`
: 表示更长的整型,通常占用8个字节。
`float`
: 表示单精度浮点型。
`double`
: 表示双精度浮点型,精度高于 `float`。
`signed`
: 指定整型变量可以存储正数、负数和零。 (默认情况下,`int`, `short`, `long`, `long long`都是`signed`)
`unsigned`
: 指定整型变量只能存储非负数 (0 和正数)。
`_Bool`
: 表示布尔类型,值只能为 `0` (false) 或 `1` (true)。 在一些编译器中也可能支持 `bool`。### 二、 流程控制关键字
`if`
: 条件语句,用于根据条件执行不同的代码块。
`else`
: 与 `if` 结合使用,用于在条件不满足时执行不同的代码块。
`for`
: 循环语句,用于重复执行一段代码块。
`while`
: 循环语句,用于重复执行一段代码块,直到条件不满足。
`do`
: 与 `while` 结合使用,构成 `do...while` 循环,至少执行一次循环体。
`switch`
: 多分支选择语句,根据表达式的值跳转到不同的代码块。
`case`
: 与 `switch` 结合使用,表示一个分支的情况。
`default`
: 与 `switch` 结合使用,表示默认分支,在没有匹配的 `case` 时执行。
`break`
: 跳出循环或 `switch` 语句。
`continue`
: 跳过当前循环迭代的剩余部分,进入下一轮循环。
`goto`
: 无条件跳转语句,跳转到程序中标记的位置 (一般不推荐使用)。
`return`
: 从函数返回,可以返回一个值。### 三、 存储类关键字
`auto`
: 声明自动变量,其作用域仅限于声明它的块。 (默认情况下,局部变量就是`auto`类型的)
`register`
: 建议编译器将变量存储在寄存器中,以提高访问速度。 (编译器可能忽略此关键字)
`static`
: 用于声明静态变量,其生命周期贯穿整个程序运行时间,或者用于声明静态函数,其作用域仅限于声明它的文件。
`extern`
: 声明外部变量,用于在多个文件中使用同一个变量。### 四、 其他关键字
`sizeof`
: 运算符,返回一个对象或类型的大小(以字节为单位)。
`typedef`
: 用于创建新的类型名。
`const`
: 用于声明常量,其值不能被修改。
`volatile`
: 用于声明易变变量,告诉编译器不要对该变量进行优化。
`restrict`
: 用于指示指针是访问该数据对象的唯一途径。
`inline`
: 建议编译器将函数内联展开。
`_Alignas`
: 指定变量的对齐方式。
注意:
以上列出的关键字可能并非所有编译器都完全支持,并且一些编译器可能还支持其他一些非标准的关键字。 建议参考你所使用的编译器的文档以获得最准确的信息。 关键字列表也可能因C标准的不同版本略有差异(例如C89, C99, C11)。
C语言关键字详解**简介**C语言关键字是预定义的保留字,它们具有特殊的含义,用于构建程序的结构、控制程序的流程以及定义数据类型等。 C语言关键字不能用作标识符(变量名、函数名等)。 理解和熟练掌握C语言关键字对于编写有效的C程序至关重要。 本文将详细列举并解释C语言关键字。
一、 数据类型关键字* **`void`**: 表示空类型,例如声明一个不返回任何值的函数 `void myFunction();`,或者声明一个泛型指针 `void *ptr;`。 * **`char`**: 表示字符类型,用于存储单个字符。 * **`short`**: 表示短整型,通常占用2个字节。 * **`int`**: 表示整型,通常占用4个字节。 * **`long`**: 表示长整型,通常占用4或8个字节,取决于编译器和操作系统。 * **`long long`**: 表示更长的整型,通常占用8个字节。 * **`float`**: 表示单精度浮点型。 * **`double`**: 表示双精度浮点型,精度高于 `float`。 * **`signed`**: 指定整型变量可以存储正数、负数和零。 (默认情况下,`int`, `short`, `long`, `long long`都是`signed`) * **`unsigned`**: 指定整型变量只能存储非负数 (0 和正数)。 * **`_Bool`**: 表示布尔类型,值只能为 `0` (false) 或 `1` (true)。 在一些编译器中也可能支持 `bool`。
二、 流程控制关键字* **`if`**: 条件语句,用于根据条件执行不同的代码块。 * **`else`**: 与 `if` 结合使用,用于在条件不满足时执行不同的代码块。 * **`for`**: 循环语句,用于重复执行一段代码块。 * **`while`**: 循环语句,用于重复执行一段代码块,直到条件不满足。 * **`do`**: 与 `while` 结合使用,构成 `do...while` 循环,至少执行一次循环体。 * **`switch`**: 多分支选择语句,根据表达式的值跳转到不同的代码块。 * **`case`**: 与 `switch` 结合使用,表示一个分支的情况。 * **`default`**: 与 `switch` 结合使用,表示默认分支,在没有匹配的 `case` 时执行。 * **`break`**: 跳出循环或 `switch` 语句。 * **`continue`**: 跳过当前循环迭代的剩余部分,进入下一轮循环。 * **`goto`**: 无条件跳转语句,跳转到程序中标记的位置 (一般不推荐使用)。 * **`return`**: 从函数返回,可以返回一个值。
三、 存储类关键字* **`auto`**: 声明自动变量,其作用域仅限于声明它的块。 (默认情况下,局部变量就是`auto`类型的) * **`register`**: 建议编译器将变量存储在寄存器中,以提高访问速度。 (编译器可能忽略此关键字) * **`static`**: 用于声明静态变量,其生命周期贯穿整个程序运行时间,或者用于声明静态函数,其作用域仅限于声明它的文件。 * **`extern`**: 声明外部变量,用于在多个文件中使用同一个变量。
四、 其他关键字* **`sizeof`**: 运算符,返回一个对象或类型的大小(以字节为单位)。 * **`typedef`**: 用于创建新的类型名。 * **`const`**: 用于声明常量,其值不能被修改。 * **`volatile`**: 用于声明易变变量,告诉编译器不要对该变量进行优化。 * **`restrict`**: 用于指示指针是访问该数据对象的唯一途径。 * **`inline`**: 建议编译器将函数内联展开。 * **`_Alignas`**: 指定变量的对齐方式。**注意:** 以上列出的关键字可能并非所有编译器都完全支持,并且一些编译器可能还支持其他一些非标准的关键字。 建议参考你所使用的编译器的文档以获得最准确的信息。 关键字列表也可能因C标准的不同版本略有差异(例如C89, C99, C11)。