Skip to content

Commit f9fff6d

Browse files
committed
Optimize Article
1 parent 140b536 commit f9fff6d

File tree

3 files changed

+65
-114
lines changed

3 files changed

+65
-114
lines changed

source/Language Core/Chapter-1/Section-03.md

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ g++ 你的代码文件名称.CPP -o 生成出来的程序名称(最好与代码
2929
./你的程序名称
3030
```
3131

32-
> **代码实战演示**:
32+
> **编译实战演示**:
3333
3434
假设我的代码文件名称为 HelloWorld.CPP
3535

@@ -46,24 +46,21 @@ Hello World!
4646

4747
## 初识代码
4848

49-
在计算机编程中只会照葫芦画瓢可不行,接下来我们逐行来认识每一段代码为我们后续的学习打下基础
49+
接下来我们逐行认识每一段代码为我们后续的学习打下基础
5050

51-
首先来看第一行我们将这行代码拆分为两个部分学习,首先是左侧的 `#include` 这是 C++ 中的预处理指令,预处理器在编译器真正编译代码之前运行,在上方代码中的作用是告知编译器,在编译过程中需要将我们在代码中所用到的一些头文件/工具库包含到当前的程序当中。
51+
第一行: `#include` 这是 C++ 中的预处理指令,预处理器在编译器真正编译代码之前运行,它的作用是告知编译器,在编译过程中将我们在代码中所用到的一些头文件/工具库包含到当前的程序当中`<iostream>` 它是 C++ 中的一个标准库头文件,它包含了输入/输出流(Input/Output Stream)等功能,以便在程序中进行输入和输出操作
5252

53-
接下来是右侧部分 `<iostream>` 它是 C++ 中的一个标准库头文件,它包含了输入/输出流(Input/Output Stream)等功能,在上方代码中的作用是告诉编译器,我们需要使用 iostream 库中定义的功能,以便在程序中进行输入和输出操作
53+
第二行: 一行没有任何内容的空行,它对代码没有任何影响编译器会忽略空行。旨在提升代码的美观和可读性
5454

55-
接下来是第三行同样的我们分为左右两个部分逐一认识,首先是左侧的 `int` 它是 C++ 中的一个基础数据类型,在上方代码中和 main()组成了一个函数,int 代表了这个程序入口函数的返回值的类型。
55+
第三行: [`int`](../Chapter-2/Section-02.md#整数型) 它是 C++ 中用于表达整数的数据类型,在上方代码中和 main()组成了一个函数,int 代表了这个程序入口函数的返回值的类型。main() 函数它是程序的入口函数,操作系统通过调⽤这个函数来启动程序。程序当中的所有代码全部都从这里开始执行没有例外。作为程序的入口函数在每个程序当中都必须有且仅有一个,如果一个 C++ 程序出现了两个及两个以上的入口函数则程序会无法编译。需要注意的是 main() 函数可以没有返回值(当返回值类型声明为 void 时),但在现代开发的⼤多数情况下它会返回⼀个整数值给操作系统,通常⽤来表⽰程序的退出状态。0 通常表⽰程序是正常关闭的,⾮零值表⽰有错误或异常情况
5656

57-
然后是右侧的 main() 函数它是程序的入口函数,操作系统通过调⽤这个函数来启动程序。程序当中的所有代码全部都从这里开始执行没有例外。作为程序的入口函数在每个程序当中都必须有且仅有一个,如果一个 C++ 程序出现了两个及两个以上的入口函数则程序会无法编译
57+
第三与第六行: `{ }` 花括号在 C++ 中都是成对出现的,有开头就必须有结尾。在函数中的花括号代表了函数体,在花括号内部的代码都⾪属于同⼀个函数,在调⽤此函数时,大括号内部的代码会按照出现的先后顺序来依次执⾏
5858

59-
注意 main() 函数可以没有返回值(当返回值类型声明为 void 时),但在⼤多数情况下,它会返回⼀个整数值给操作系统,通常⽤来表⽰程序的退出状态。0 通常表⽰程序是正常关闭的,⾮零值表⽰有错误或异常情况
59+
第四行: `std::cout` 是 C++ 标准库中的⼀个输出流对象,它属于 `<iostream>` 头⽂件。`std::cout` 通常⽤于在标准输出设备(通常是屏幕或控制台)上输出数据。它是 std 命名空间中的⼀个成员,因此在使⽤时需要包含 `std` 前缀,除⾮你已经在⽂件顶部使⽤了 `using namespace std;` 声明。`std::cout` 与运算符 `<<` ⼀起使⽤,可以将各种类型的数据(如整数、浮点数、字符串、字符等)发送到标准输出流。`std::endl` C++ 标准库中的⼀个操纵符(manipulator),它也属于 `<iostream>` 头⽂件。当与输出流如 `std::cout` ⼀起使⽤时,std::endl 会完成两件事:插⼊换⾏符:它会在输出流中插⼊⼀个换⾏符(\n),这通常⽤于在控制台或⽂件中创建新的⼀⾏。刷新输出缓冲区:除了插⼊换⾏符之外,`std::endl` 还会⽴即刷新与输出流关联的缓冲区。这意味着所有待处理的输出都会⽴即被发送到它们的⽬的地(如控制台或⽂件),⽽不是等待缓冲区填满或程序结束
6060

61-
你肯定注意到了在上方代码中有一对大括号 `{ }` 它在 C++ 中都是成对出现的,有开头就必须有结尾。在函数中的大括号代表了函数体,在当
62-
前大括号内部的代码都⾪属于同⼀个函数,在调⽤此函数时,大括号内部的代码会按照出现的先后顺序来依次执⾏。
61+
第五行: `return 0;` 其中的 `return` 在 C++ 中表示返回操作,当代码执⾏到 `return` 语句时,它会⽴即停⽌执⾏当前的函数体,并将控制权返回给调⽤该函数的地⽅。如果 `return` 语句后⾯跟着⼀个值(这个值的类型必须与函数的返回类型兼容),那么这个值将被返回给调⽤者。如果函数是 void 类型的,那么 `return` 语句后⾯通常不会跟任何值。在 main 函数中,return 语句通常⽤于返回程序的退出状态。
6362

64-
第四行的 `std::cout` 是 C++ 标准库中的⼀个输出流对象,它属于 `<iostream>` 头⽂件。`std::cout` 通常⽤于在标准输出设备(通常是屏幕或控制台)上输出数据。它是 std 命名空间中的⼀个成员,因此在使⽤时需要包含 `std` 前缀,除⾮你已经在⽂件顶部使⽤了 `using namespace std;` 声明。
65-
`std::cout` 与运算符 `<<` ⼀起使⽤,可以将各种类型的数据(如整数、浮点数、字符串、字符等)发送到标准输出流。
63+
```{tip}
6664
67-
`std::endl` C++ 标准库中的⼀个操纵符(manipulator),它也属于 `<iostream>` 头⽂件。当与输出流如 `std::cout` ⼀起使⽤时,std::endl 会完成两件事:插⼊换⾏符:它会在输出流中插⼊⼀个换⾏符(\n),这通常⽤于在控制台或⽂件中创建新的⼀⾏。刷新输出缓冲区:除了插⼊换⾏符之外,`std::endl` 还会⽴即刷新与输出流关联的缓冲区。这意味着所有待处理的输出都会⽴即被发送到它们的⽬的地(如控制台或⽂件),⽽不是等待缓冲区填满或程序结束。
68-
69-
接下来是我们的最后一行代码 `return 0;` 其中的 `return` 在 C++ 中表示返回操作,当代码执⾏到 `return` 语句时,它会⽴即停⽌执⾏当前的函数体,并将控制权返回给调⽤该函数的地⽅。如果 `return` 语句后⾯跟着⼀个值(这个值的类型必须与函数的返回类型兼容),那么这个值将被返回给调⽤者。如果函数是 void 类型的,那么 `return` 语句后⾯通常不会跟任何值。在 main 函数中,return 语句通常⽤于返回程序的退出状态。
65+
事实上在 C++ 98 标准也就是第一个正式标准发布的时候,程序的主函数 `int main()` 就可以不使用 `return` 语句了。当程序在主函数结束时未遇到返回语句则默认执行返回语句,它等价于 `return 0;`.
66+
```
Lines changed: 22 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
# 代码注释
22

3-
代码注释几乎是每个编程语言都必有的功能,它的主要作用就是让开发者能够更好更快速的阅读代码理解其的意思。在 C++ 中有着多种的注释类型,每个注释类型都有其对应的使用方式和适合的使用场景
3+
代码注释几乎是每个编程语言都必有的功能,它的主要作用就是让开发者能够更好更快速的阅读代码理解其的意思。在 C++ 中有着多种的注释方式,每个注释方式都有其对应的使用方式和适合的使用场景
44

55
## 基础注释
66

7-
在 C++ 中最基本且最常用的注释类型有以下两种:
7+
在 C++ 中最基本且最常用的注释方式有以下两种:
88

99
* **单行注释**
1010
* **多行注释**
@@ -22,13 +22,13 @@ int age = 18;
2222

2323
由于单行注释的特性也可以将其写在某行代码的后方,具体使用场景为定义了多个变量需要描述解释。
2424

25-
```{note}
25+
```{tip}
2626
为了让代码看起来更加的整洁美观,我们通常会使用 `Tab` 键来让代码或注释缩进使其与上下行的代码垂直对齐。
2727
```
2828

2929
```CPP
30-
char C = "A"; // 字母 A
31-
int ID = "5201314" // 身份标识
30+
std::cout << "Modern C++ Full-Stack Tutorial" << std::endl; // 书籍名称
31+
std::cout << "Author: 龙森" << std::endl; // 书籍作者
3232
```
3333

3434
### 多行注释
@@ -37,8 +37,8 @@ int ID = "5201314" // 身份标识
3737

3838
```CPP
3939
/*
40-
下方函数是用来进行加法计算的
41-
调用此函数进行 A + B 操作
40+
整型函数
41+
进行 A + B 操作
4242
将返回计算结果
4343
*/
4444

@@ -48,18 +48,6 @@ int Addition(int A, int B) {
4848
}
4949
```
5050
51-
如果想要美化多行注释代码可以添加一些 ASCII 符号进行美化。
52-
53-
```CPP
54-
/*
55-
==== 函数说明 ====
56-
这里是函数的使用说明
57-
58-
==== 参数说明 ====
59-
这里是参数的传参说明
60-
*/
61-
```
62-
6351
如果在开发过程中你需要临时屏蔽某些代码但又不想删除的时候也可以使用注释来进行屏蔽。
6452
6553
```CPP
@@ -68,7 +56,7 @@ int Addition(int A, int B) {
6856

6957
## 高级注释
7058

71-
在普通注释的基础上高级注释可以使用特殊工具如 `Doxygen` 提取 C++ 的代码和对应的 `Doxygen` 注释编译成一个在线文档或 PDF 能够让开发者在无需翻阅大量代码的前提下精准的找到自己想要查看的代码的对应描述,同时高级注释语法支持将整个代码文件进行注释描述。
59+
在普通注释的基础上高级注释可以使用特殊工具如 `Doxygen` 提取 C++ 的代码和对应的 `Doxygen` 注释编译成一个在线文档能够让开发者在无需翻阅大量代码的前提下精准的找到自己想要查看的代码的对应描述,同时高级注释语法支持将整个代码文件进行注释描述。
7260

7361
### 代码文件注释
7462

@@ -79,10 +67,8 @@ int Addition(int A, int B) {
7967
* @details 一些细节
8068
* @mainpage 工程概览
8169
* @author 作者
82-
* @email 邮箱
8370
* @version 版本号
8471
* @date 年-月-日
85-
* @license 版权
8672
*/
8773
```
8874

@@ -92,28 +78,22 @@ int Addition(int A, int B) {
9278

9379
该类型注释通常由开发工具定义与实现具体功能,其中 `TODO` 已经被绝大多数的开发工具所兼容,它的功能是显示一个待办事项常用于用来标记接下来所要进行的任务或所需修改的功能。
9480

95-
### TODO
96-
9781
```CPP
98-
// TODO 接下来编写一个加法计算函数
99-
100-
// TODO 老板让我优化 *** 代码的运行速度
82+
// TODO 增加分流功能
10183
```
10284

103-
对于提醒类型的注释通常你的开发工具会在控制台中显示且高亮该注释所在行,有些开发工具会在你编译的时候终止并显示此行直至你删除了这个待办事项注释。
85+
**其它类型:**
10486

105-
### 其它提醒注释
87+
| 注释类型 | 作用和使用场景 | 示例 |
88+
| :----: |:----:| :----: |
89+
| **TODO** | **待办事项**:最常用的一种,用于标记任何需要完成的任务 | `// TODO: 实现用户身份验证逻辑` |
90+
| **FIXME** | **待修复**:明确指出代码中存在一个已知但尚未修复的 bug。 | `// FIXME: 当输入为负数时,此函数会崩溃` |
91+
| **HACK** | **临时方案**:当前代码能正常工作,但未来应该用更好的方法重构。 | `// HACK: 为了临时解决渲染延迟,这里强制刷新了两次` |
92+
| **UNDONE** | **未完成**:表示某段代码或一个功能块的开发被中断,尚未彻底完成。 | `// UNDONE: 重构到一半,需要继续完成剩余部分` |
93+
| **XXX** | **警示/危险**:用于标记代码中存在严重问题或可能导致风险的地方,需要特别注意。 | `// XXX: 这里的内存管理逻辑可能导致泄露` |
94+
| **NOTE** | **笔记/说明**:用于对某段复杂的代码进行解释或提供额外信息,帮助他人理解。 | `// NOTE: 这里使用位运算是为了提高性能` |
10695

107-
| 注释类型 | 作用和使用场景 | 示例 |
108-
| :----------- | :-------------------------------------------------------------- | :------------------------------ |
109-
| **`TODO`** | **待办事项**:最常用的一种,用于标记任何需要完成的任务,比如一个尚未实现的功能或需要补充的逻辑。 | `// TODO: 实现用户身份验证逻辑` |
110-
| **`FIXME`** | **待修复**:明确指出代码中存在一个已知但尚未修复的 bug。它的紧急程度通常比 `TODO` 更高。 | `// FIXME: 当输入为负数时,此函数会崩溃` |
111-
| **`HACK`** | **临时方案**:标记一段走了捷径或使用了不优雅方式实现的代码。这表示它能正常工作,但不是最佳实践,未来应该用更好的方法重构。 | `// HACK: 为了临时解决渲染延迟,这里强制刷新了两次` |
112-
| **`UNDONE`** | **未完成**:表示某段代码或一个功能块的开发被中断,尚未彻底完成。 | `// UNDONE: 重构到一半,需要继续完成剩余部分` |
113-
| **`XXX`** | **警示/危险**:用于标记代码中存在严重问题或可能导致风险的地方,需要特别注意。 | `// XXX: 这里的内存管理逻辑可能导致泄露` |
114-
| **`NOTE`** | **笔记/说明**:用于对某段复杂的代码进行解释或提供额外信息,帮助他人理解。 | `// NOTE: 这里使用位运算是为了提高性能` |
115-
116-
```{note}
96+
```{Attention}
11797
并不是所有的开发工具都支持提醒注释,具体是否能用还要在你的开发工具上进行对应的测试。
11898
```
11999

@@ -123,4 +103,6 @@ int Addition(int A, int B) {
123103

124104
**实时注释**: 当你对代码进行了改动请确保注释也进行对应的更新,防止出现注释与代码的实际功能有差异。
125105

126-
**表明实意**: 注释应该表达代码无法直接传递的实际意思,而不是重复的表达代码的内容。
106+
**表明实意**: 注释应该表达代码无法直接传递的实际意思,而不是重复的表达代码的内容。
107+
108+
**注释方案**: 在大型项目中尽量使用 Doxygen 注释语法,这样做的好处就是能够提升注释的可读性也可编译成项目文档。

0 commit comments

Comments
 (0)