🌈 style:

This commit is contained in:
lzy
2024-06-23 17:45:58 +08:00
parent 5598552b22
commit a5172579e3
16 changed files with 138 additions and 393 deletions

View File

@@ -1,4 +1,5 @@
# 目录
- [目录](#目录)
- [第一章 绪论](#第一章-绪论)
- [第一节](#第一节)
@@ -27,12 +28,6 @@
- [进程](#进程)
- [防止写越界,防止内存泄漏,谁打开谁关闭,谁申请谁释放](#防止写越界防止内存泄漏谁打开谁关闭谁申请谁释放)
# 第一章 绪论
课程地址,[史上最强最细腻的linux嵌入式C语言学习教程【李慧芹老师】_哔哩哔哩_bilibili](https://www.bilibili.com/video/BV18p4y167Md/?spm_id_from=333.999.0.0&vd_source=4e03f52e94cfa281cde032856b1f93a7)。
@@ -49,8 +44,6 @@
| 1967 | B语言 |
| 1973 | C语言 |
### C语言特点
1. 基础性语言
@@ -60,8 +53,6 @@
5. 移植性好,执行效率高
6. 允许直接对硬件操作
### C语言学习建议
1. 概念的正确性
@@ -69,8 +60,6 @@
3. 阅读优秀的程序段
4. 大量练习,面试题
### 课程思路
1. 基础概念
@@ -85,17 +74,13 @@
10. 调试工具gdbmake)
11. 常用库函数
### 课程平台
* 老师64位的`redhat6``vim``gcc4.4.6(make)`
* 本人:`WSL-debian``vscode(remote ssh)``gcc12.2.0(make)``ohmyzsh(theme:eastwood)`
- 老师64位的`redhat6``vim``gcc4.4.6(make)`
- 本人:`WSL-debian``vscode(remote ssh)``gcc12.2.0(make)``ohmyzsh(theme:eastwood)`
我的`gcc`版本比较新所以很多提示比较完善老师这个课程是很早的课那个时候的gcc提示没有现在厉害所以还是要结合老师的视频的思路在当时提示不完善的时候是如何手撕代码分析出来的。
## 第二节
### 神一般的`Hello world!`
@@ -122,8 +107,6 @@ int main(void)
用哪种`main`得看编译器环境,目前在`linux``gcc`下,`int main(void);`常用,需要传参用`int main(int argc, char **argv);`
### 源文件到可执行文件
#### gcc
@@ -147,8 +130,6 @@ gcc hello.c # 得到a.out可执行文件
gcc hello.c -o myhello # 得到myhello可执行文件
```
#### make
```bash
@@ -159,14 +140,10 @@ $ ls
hello hello.c
```
### vim
老师对于常用的`.vimrc`做了一些介绍,笔者建议`vscode``remote-ssh`插件可以在win的vscode编辑器享受linux的环境。
## 第三节
### 基本概念
@@ -192,7 +169,7 @@ int main(void)
这里我的gcc版本比较新所以和老师的不一致总之老师的意思就是
> 不要忽略gcc的警告
> 不要忽略gcc的警告
```bash
# 通过 -Wall 参数让gcc显示全部警告
@@ -216,9 +193,9 @@ hello.c:6:9: warning: unused variable i [-Wunused-variable]
```
* 例如说这个变量`i`定义了但是没用上,就是你清楚来龙去脉可以忽略的警告。
*`malloc`那个警告就是在告诉你`malloc`所属的`stdlib.h`库未引入。
* C语言程序往往如果能把警告都消除错误也能解决。例如
- 例如说这个变量`i`定义了但是没用上,就是你清楚来龙去脉可以忽略的警告。
-`malloc`那个警告就是在告诉你`malloc`所属的`stdlib.h`库未引入。
- C语言程序往往如果能把警告都消除错误也能解决。例如
```c
#include <stdio.h>
@@ -270,20 +247,14 @@ cc a.c -o a
fopen():No such file or directory
```
##### 2. 以函数为单位来进行程序编写
`main`是特殊的定义,其实就是一个正在运行的线程。其实对于内核而言,是只有进程的概念,且与我们理解的进程、线程不一样。
##### 3. 声明部分+实现部分
早期的编译器要求变量先定义后使用。
##### 4. `return 0/exit(0)`
结束当前进程,是给父进程看的。
@@ -303,12 +274,8 @@ Hello world!
在我本地无法复现,新版本可能改了。
##### 5. 多用空格空行
##### 6. 添加注释
```c
@@ -328,25 +295,14 @@ func(){
#endif
```
#### 算法
解决问题的方法。流程图NS图FSM有限状态机
#### 程序
用某种语言实现算法
#### 进程
#### 防止写越界,防止内存泄漏,谁打开谁关闭,谁申请谁释放