vault backup: 2026-01-22 20:49:01
This commit is contained in:
@@ -8,15 +8,15 @@ C语言程序源码文件以.c结尾,一个C语言程序主要包括以下部
|
||||
|
||||
| 指令 | 说明 |
|
||||
| -- | -- |
|
||||
| #include | 包含(引入)一个源代码文件 |
|
||||
| #define | 定义一个宏 |
|
||||
| #undef | 取消已定义的宏 |
|
||||
| #if | 如果给定条件为真,则编译其后的代码 |
|
||||
| #ifdef | 如果宏已经定义,则编译其后的代码 |
|
||||
| #ifndef | 如果宏没有定义,则编译其后的代码 |
|
||||
| #elif | 如果前面的 #if 给定条件为假,并且当前条件为真,则编译其后的代码 |
|
||||
| #endif | 结束一个 #if、#ifdef 或者 #ifndef 条件编译块 |
|
||||
| #defined | 这不是命令,而是操作符,用来判断某个宏是否已被定义。 |
|
||||
| `#include` | 包含(引入)一个源代码文件 |
|
||||
| `#define` | 定义一个宏 |
|
||||
| `#undef` | 取消已定义的宏 |
|
||||
| `#if` | 如果给定条件为真,则编译其后的代码 |
|
||||
| `#ifdef` | 如果宏已经定义,则编译其后的代码 |
|
||||
| `#ifndef` | 如果宏没有定义,则编译其后的代码 |
|
||||
| `#elif` | 如果前面的 `#if` 给定条件为假,并且当前条件为真,则编译其后的代码 |
|
||||
| `#endif` | 结束一个 `#if`、`#ifdef` 或者 `#ifndef` 条件编译块 |
|
||||
| `#defined` | 这不是命令,而是操作符,用来判断某个宏是否已被定义。 |
|
||||
|
||||
|
||||
- 主函数:main函数 --> C语言程序的入口,一个C语言程序有且仅有一个主函数(main)
|
||||
@@ -25,7 +25,7 @@ C语言程序源码文件以.c结尾,一个C语言程序主要包括以下部
|
||||
|
||||
- 语句及表达式:语句以英文分号;结尾,if(....)表达式等等
|
||||
|
||||
- 注释:语句或表达式的解释,单行(//)和多行(/* */)
|
||||
- 注释:语句或表达式的解释,单行(`//`)和多行(`/* */`)
|
||||
|
||||
1. **C语言的语法**
|
||||
|
||||
@@ -39,11 +39,11 @@ C语言程序源码文件以.c结尾,一个C语言程序主要包括以下部
|
||||
|
||||
- 常量(Constants):数值不能修改的量
|
||||
|
||||
- 字符串值(String Literals):""
|
||||
- 字符串值(String Literals):`""`
|
||||
|
||||
- 运算符(Operators): +、-、*、/.....
|
||||
- 运算符(Operators): `+、-、*、/.....`
|
||||
|
||||
- 分隔符(Separators): ;
|
||||
- 分隔符(Separators): `;`
|
||||
|
||||
1. 分号;
|
||||
|
||||
@@ -51,11 +51,11 @@ C语言程序源码文件以.c结尾,一个C语言程序主要包括以下部
|
||||
|
||||
1. 注释
|
||||
|
||||
在C语言程序中,注释用于说明语句或程序的功能和使用方法,注释的语句不会参与到程序的运行只用于开发人员或 使用人员进行查阅C语言程序,注释的方式有单行(// )和多行(/* */)两种。注释不能嵌套使用。
|
||||
在C语言程序中,注释用于说明语句或程序的功能和使用方法,注释的语句不会参与到程序的运行只用于开发人员或 使用人员进行查阅C语言程序,注释的方式有单行(`//` )和多行(`/* */`)两种。注释不能嵌套使用。
|
||||
|
||||
单行注释: // 需要注释的内容
|
||||
|
||||
多行注释:/* 需要注释的内容 */
|
||||
多行注释:`/* 需要注释的内容 */`
|
||||
|
||||
1. 标识符
|
||||
|
||||
@@ -75,59 +75,59 @@ abc(√) 123(×) _123(√) a&b(×) Ace(√) int(×)
|
||||
|
||||
在C语言程序中具有特殊功能或含义的单词,函数名、变量名、常量名及其他用户标识符不能是关键字
|
||||
|
||||
| 关键字 | 说明 |
|
||||
| -- | -- |
|
||||
| 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 | 循环语句的循环条件 |
|
||||
| 关键字 | 说明 |
|
||||
| ---------- | ---------------------------------- |
|
||||
| `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` | 循环语句的循环条件 |
|
||||
|
||||
|
||||
### C99 新增关键字
|
||||
|
||||
| _Bool | _Complex | _Imaginary | inline | restrict |
|
||||
| `_Bool` | `_Complex` | `_Imaginary` | `inline` | `restrict` |
|
||||
|
||||
|
||||
### C11 新增关键字
|
||||
|
||||
| _Alignas | _Alignof | _Atomic | _Generic | _Noreturn |
|
||||
| -- | -- | -- | -- | -- |
|
||||
| _Static_assert | _Thread_local | | | |
|
||||
| `_Alignas` | `_Alignof` | `_Atomic` | `_Generic` | `_Noreturn` |
|
||||
| ---------------- | --------------- | ------- | -------- | --------- |
|
||||
| `_Static_assert` | `_Thread_local` | | | |
|
||||
|
||||
|
||||
# 二、编程规范
|
||||
|
||||
1. 命名方式
|
||||
|
||||
自定义标识符时要做到
|
||||
自定义标识符时要做到**见名知意**
|
||||
|
||||
变量名:max_number zui_da_zhi maxNumber
|
||||
|
||||
@@ -135,25 +135,25 @@ abc(√) 123(×) _123(√) a&b(×) Ace(√) int(×)
|
||||
|
||||
常见的命名方式:
|
||||
|
||||
- 驼峰式
|
||||
- ==驼峰式==
|
||||
|
||||
以小写或大写字母开头,后面跟大写或小写字母,如myApp,MyName等类似的命名方式
|
||||
|
||||
- 匈牙利命名法
|
||||
|
||||
以变量类型的缩写开头,如int iCount; unsigned int uiNum;等
|
||||
以变量类型的缩写开头,如`int iCount; unsigned int uiNum;`等
|
||||
|
||||
- 帕斯卡命名法
|
||||
|
||||
类似与驼峰式命名法,以大写字母开头,如MyApp,MyName等
|
||||
|
||||
- 下划线命名法
|
||||
- ==下划线命名法==
|
||||
|
||||
在Linux中最常见的命名方式,Linux一些系统库、开源软件等编码中较为常见。
|
||||
|
||||
如char my_name[10];int first_num;等
|
||||
如`char my_name[10];int first_num;`等
|
||||
|
||||
1. 缩进
|
||||
2. 缩进
|
||||
|
||||
在C语言源码中缩进要对齐,代码要有层级体现,最好用 8 个空格缩进,避免用 4 个空格甚至是 2 个空格
|
||||
|
||||
@@ -169,15 +169,15 @@ void fun(void)
|
||||
}
|
||||
```
|
||||
|
||||
1. 空格和空行
|
||||
3. 空格和空行
|
||||
|
||||
空格和空行也是提高程序可读性的很重要的一方面,谁都不愿意阅读挤在一起的代码, 因此适当的空格和空行能让程序看起来逻辑更加清晰。
|
||||
|
||||
1. 括号
|
||||
4. 括号
|
||||
|
||||
函数体和循环结构、分支结构等代码块需要用到花括号将其代码括起来,对于函数而言, 在 LINUX 编码风格中,左右花括号分别占用一行,在其他的代码块中,左花括号可以放在 上一行的最右边,右花括号单独占一行(推荐像函数一样左右括号各自单独占一行,使得代码的风格更具一致性)。
|
||||
|
||||
1. 注释
|
||||
5. 注释
|
||||
|
||||
在我们编写程序的时候,如果遇到比较复杂的情形,我们可以在代码中用自然语言添加 一些内容,来辅助我们自己和将来要阅读该程序的人员更好地理解程序。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user