Skip to content

Commit 05ef84b

Browse files
committed
vault backup: 2025-04-07 18:05:32
1 parent 43f36c4 commit 05ef84b

File tree

7 files changed

+62
-45
lines changed

7 files changed

+62
-45
lines changed

src/develop/C/12_IO.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11

2-
# I/O 函数
2+
# 12. I/O 函数
33

44
## 1 缓存和字节流
55

src/develop/C/13_file.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# 文件操作
1+
# 13. 文件操作
22

33

44
## 1 文件指针

src/develop/C/14_specifier.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ tags:
44
- C
55
---
66

7-
# 变量说明符
7+
# 14. 变量说明符
88

99
C 语言允许声明变量的时候,加上一些特定的说明符(specifier),为编译器提供变量行为的额外信息。它的主要作用是帮助编译器优化代码,有时会对程序行为产生影响。
1010

src/develop/C/15_multifile.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# 多文件项目
1+
# 15. 多文件项目
22

33
## 简介
44

src/develop/C/16_cli.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# 命令行环境
1+
# 16. 命令行环境
22

33
## 命令行参数
44

src/develop/C/17_multibyte.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# 多字节字符
1+
# 17. 多字节字符
22

33
本章介绍 C 语言如何处理非英语字符。
44

src/develop/CPP/1_Externsion.md

Lines changed: 56 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ tag:
66

77
## 1 类型增强
88

9-
* 类型检查更严格
9+
### 1.1 类型检查更严格
10+
1011
比如一个 const 类型的指针赋值给非const 类型的指针。c 语言中可以通的过,但是在 c++ 中则编不过去
1112
```cpp
1213
int main()
@@ -20,7 +21,8 @@ int main()
2021
```
2122

2223
![](img/1_Externsion/file-20250407145721348.png)
23-
* 布尔类型(bool)
24+
### 1.2 布尔类型(bool)
25+
2426
C 语言的逻辑真假用 0 和非 0 来表示,C++ 中有了具体的类型
2527
```cpp
2628
int main()
@@ -34,7 +36,8 @@ int main()
3436
return 0;
3537
}
3638
```
37-
* 枚举(enum)
39+
### 1.3 枚举(enum)
40+
3841
C 语言中枚举类型本质就是整型,枚举变量可以用任意整型赋值,而 C++中枚举变量只能用被枚举出来的元素初始化。
3942
```cpp
4043
enum season
@@ -54,7 +57,8 @@ int main()
5457

5558
![](img/1_Externsion/file-20250407150939601.png)
5659

57-
* 表达式的值可被赋值
60+
### 1.4 表达式的值可被赋值
61+
5862
c 语言中表达式通常不能作为左值的,即不可被赋值,c++中某些表达式是可以赋值的。比如
5963
```cpp
6064
#include <iostream>
@@ -157,10 +161,11 @@ int main()
157161

158162
## 3 函数重载(function overload)
159163

160-
* 重载规则
161-
1. 函数名相同
162-
2. 参数个数不同,参数的类型不同,参数顺序不同,均可构成重载
163-
3. 返回值类型不同则不可以构成重载。
164+
### 3.1 重载规则
165+
166+
1. 函数名相同
167+
2. 参数个数不同,参数的类型不同,参数顺序不同,均可构成重载
168+
3. 返回值类型不同则不可以构成重载。
164169

165170
```cpp
166171
void func(int a); //ok
@@ -171,9 +176,10 @@ char func(int a); //与第一个函数有冲突
171176
```
172177
有的函数虽然有返回值类型,但不与参数表达式运算,而作一条单独的语句
173178
174-
* 匹配原则:
175-
1. 严格匹配,找到则调用。
176-
2. 通过隐式转换寻求一个匹配,找到则调用
179+
### 3.2 匹配原则
180+
181+
1. 严格匹配,找到则调用。
182+
2. 通过隐式转换寻求一个匹配,找到则调用
177183
```cpp
178184
#include <iostream>
179185
using namespace std;
@@ -231,7 +237,8 @@ int main()
231237

232238
通常情况下,函数在调用时,形参从实参那里取得值。对于多次调用用一函数同一实参时,C++给出了更简单的处理办法。给形参以默认值,这样就不用从实参那里取值了
233239

234-
* 单个参数
240+
### 5.1 单个参数
241+
235242
```cpp
236243
#include <iostream>
237244
#include <ctime>
@@ -252,7 +259,9 @@ int main()
252259
return 0;
253260
}
254261
```
255-
* 多个参数
262+
263+
### 5.2 多个参数
264+
256265
```cpp
257266
float volume(float length, float weight = 4,float high = 5)
258267
{
@@ -270,10 +279,11 @@ int main()
270279
}
271280
```
272281

273-
* 规则
274-
1,默认的顺序,是从右向左,不能跳跃。
275-
2,函数声明和定义一体时,默认认参数在定义(声明)处。声明在前,定义在后,默认参数在声明处。
276-
3,一个函数,不能既作重载,又作默认参数的函数。当你少写一个参数时,系统无法确认是重载还是默认参数
282+
### 5.3 规则
283+
284+
1. 默认的顺序,是从右向左,不能跳跃。
285+
2. 函数声明和定义一体时,默认认参数在定义(声明)处。声明在前,定义在后,默认参数在声明处。
286+
3. 一个函数,不能既作重载,又作默认参数的函数。当你少写一个参数时,系统无法确认是重载还是默认参数
277287
```cpp
278288
void print(int a)
279289
{
@@ -330,7 +340,8 @@ int main() {
330340

331341
```
332342
333-
引用的主要特点:
343+
### 6.1 主要特点
344+
334345
1. **必须初始化**
335346
- 声明引用时必须立即初始化
336347
- 不能像指针那样先声明后赋值
@@ -340,7 +351,8 @@ int main() {
340351
3. **不占用额外内存**
341352
- 引用只是一个别名,不会分配新的内存空间
342353
343-
引用的常见用途:
354+
### 6.2 常见用途
355+
344356
1. **函数参数**
345357
- 避免值传递的拷贝开销
346358
- 允许函数修改参数的值
@@ -355,7 +367,8 @@ for (int& num : nums) { // 使用引用可以修改元素
355367
}
356368
```
357369

358-
与指针的比较:
370+
### 6.3 与指针的比较
371+
359372
1. **安全性**
360373
- 引用不能为空
361374
- 不需要解引用操作符
@@ -409,7 +422,8 @@ int main() {
409422
```
410423
![](img/1_Externsion/file-20250407171313606.png)
411424

412-
new 和 delete 的特点
425+
### 7.1 new 和 delete 的特点
426+
413427
1. **自动计算所需空间**
414428
- `new` 会根据类型自动计算需要分配的内存大小
415429
- 不需要像 `malloc` 那样手动计算字节数
@@ -420,7 +434,7 @@ new 和 delete 的特点
420434
- `new` 返回对应类型的指针,不需要类型转换
421435
- 而 `malloc` 返回 `void*`,需要手动转换类型
422436

423-
数组形式
437+
### 7.2 数组形式
424438
```cpp
425439
// 分配数组
426440
int* arr = new int[10];
@@ -429,7 +443,8 @@ int* arr = new int[10];
429443
delete[] arr;
430444
```
431445

432-
注意事项
446+
### 7.3 注意事项
447+
433448
1. **内存泄漏**
434449
- 使用 `new` 分配的内存必须用 `delete` 释放
435450
- 数组形式必须用 `delete[]` 释放
@@ -456,7 +471,7 @@ auto p = make_unique<int>(42);
456471

457472
内联函数是 C++ 中提供的一个关键特性,用于优化程序性能。通过在函数定义前加上 `inline` 关键字,可以建议编译器将函数调用处用函数体替换。
458473

459-
* 基本语法
474+
### 8.1 基本语法
460475

461476
````cpp
462477
#include <iostream>
@@ -483,23 +498,24 @@ inline int Calculator::subtract(int a, int b) {
483498
}
484499
````
485500
486-
* 特点和使用场景
487-
适用场景
488-
- 函数体积小
489-
- 频繁调用的函数
490-
- 不含复杂控制流程(如循环、switch 等)
491-
- 不是递归函数
492-
优点
493-
- 减少函数调用开销
494-
- 提高程序执行效率
495-
- 可能减少栈的使用
496-
497-
* 缺点
501+
### 8.2 特点和使用场景
502+
503+
适用场景
504+
- 函数体积小
505+
- 频繁调用的函数
506+
- 不含复杂控制流程(如循环、switch 等)
507+
- 不是递归函数
508+
优点
509+
- 减少函数调用开销
510+
- 提高程序执行效率
511+
- 可能减少栈的使用
512+
513+
缺点
498514
- 可能增加代码体积
499515
- 不适合大型函数
500516
- 过度使用可能导致程序膨胀
501517
502-
* 实际使用示例
518+
### 8.3 实际使用示例
503519
504520
````cpp
505521
#include <iostream>
@@ -528,7 +544,8 @@ int main() {
528544
}
529545
````
530546

531-
* 注意事项
547+
### 8.4 注意事项
548+
532549
1. **内联是建议性的**
533550
- 编译器可能会忽略 inline 关键字
534551
- 也可能会自动内联未标记的函数
@@ -560,7 +577,7 @@ int main() {
560577
}
561578
```
562579

563-
* 最佳实践建议
580+
* 建议
564581
1. 优先在头文件中定义内联函数
565582
2. 只将简单、小巧的函数声明为内联
566583
3. 让编译器自动决定是否内联

0 commit comments

Comments
 (0)