C语言的简洁
C语言仅有32个关键字、9种控制语句、34种运算符即可实现无数的功能。
关键字
可省略的关键字:auto、extern、signed.
复合类型的关键字:enum、struct、union.
include
include表示导入,include可以导入任意的文件。
比如#include <stdio.h>表示导入stdio.h这个头文件(PS: std表示标准,io是inputoutput的缩写,所以stdio表示标准的输入输出库)。
include后面可以跟<>也可以跟""。<>表示导入系统文件,""表示导入自定义文件。
函数
main函数是程序的主函数,有且仅有一个。
return出现在main函数中表示程序结束,出现在其它函数中表示函数结束。
system函数可以启动一个外部应用程序。参数可以是cmd命令(如:calc、mspaint等),也可以是应用程序的exe文件的绝对路径(路径分隔符为/或\\)。
分布编译
- 预处理:宏定义展开、头文件展开、条件编译、去掉注释,不检查语法;
- 编译:检查语法,若语法正确,将预处理后的文件生成汇编文件;
- 汇编:将汇编文件生成目标文件(机器语言,即二进制文件);
- 链接:将依赖库链接到最终的可执行程序中;
| 编译步骤 | 命令 |
|---|---|
| 预处理 | gcc -E hello.c -o hello.i |
| 编 译 | gcc -S hello.i -o hello.s |
| 汇 编 | gcc -c hello.s -o hello.o |
| 链 接 | gcc hello.o -o hello |
| 选项 | 含义 |
|---|---|
| -E | 只进行预处理 |
| -S(大写) | 只进行预处理和编译 |
| -c(小写) | 只进行预处理、编译和汇编 |
| -o file | 指定生成的输出文件名为 file |
| 文件后缀 | 含义 |
|---|---|
| .c | C 语言文件 |
| .i | 预处理后的 C 语言文件 |
| .s | 编译后的汇编文件 |
| .o | 编译后的目标文件 |

程序执行过程

IDE(Visio Studio)
断点与调试
断点:在选中行按F9,或在最左侧鼠标单击,如下所示。

调试:
- 断点
- “调试”–“开始调试(F5)”
- “调试”–“窗口”–“反汇编”
- 逐句调试或逐过程调试
逐句调试:当调试到调用的函数时可以进入该函数的函数体调试;
逐过程调试:当调试到调用的函数时不进入该函数的函数体调试,直接跳到下一行代码调试;

快捷键
补全语法:Ctrl+J弹出提示,选择语法,点击tab键可以补全语法
格式化代码:Ctrl+K,Ctrl+F
注释选中行:Ctrl+K,Ctrl+C
取消选中行的注释:Ctrl+K,Ctrl+U
逐语句执行:F11
逐过程执行:F10
跳出过程:Shift+F11
停止调试:Shift+F5
















![【PWN · ret2syscall】[Wiki] ret2syscall](https://img-blog.csdnimg.cn/9559d7bdc9bc40bea2e6c5c65c9f5ec1.png)

