🌈 style:
This commit is contained in:
@@ -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. 调试工具(gdb,make)
|
||||
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有限状态机)
|
||||
|
||||
|
||||
|
||||
#### 程序
|
||||
|
||||
用某种语言实现算法
|
||||
|
||||
|
||||
|
||||
#### 进程
|
||||
|
||||
|
||||
|
||||
#### 防止写越界,防止内存泄漏,谁打开谁关闭,谁申请谁释放
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user