入门
历史
C 语言是一种通用的高级语言,最初是由丹尼斯·里奇在贝尔实验室为开发 UNIX 操作系统而设计的。C 语言最开始是于 1972 年在 DEC PDP-11 计算机上被首次实现。
特点
- 设计特性
- 高效性
- 可移植性
- 强大灵活
- 面相过程
应用范围
- 操作系统
- 嵌入式系统
- 应用软件
- 游戏开发
语言标准
- C89:奠定了现代C语言基础
- C99:最重要的功能扩展
- C11:稳定性和安全性增强
编译与执行过程
- 预处理
- 编译
- 汇编
- 链接
第一个C程序
输出Hello World!
c
#include <stdio.h>
int main(){
printf("Hello World!");
return 0;
}总结
- C语言既不是汇编语言,也不是高级语言,而是一种通用的中级语言。
- C语言编译过程就是源代码经过预处理、编译、汇编和链接四个阶段,最终转换为可执行文件。
- 可执行文件是"完整独立的产品",而源文件和目标文件是"生产过程中的中间产物"。
1. 程序语言
1.1 机器语言
低级语言,0和1组成的二进制代码,计算机直接识别。
1.2 汇编语言
面向机器的程序设计语言,用英文和字符代替二级制代码。
1.3 高级语言
语法类似英文,贴近自然语言。
5. 第一个C程序

6. 编译过程
6.1 编译步骤
C代码编译成可执行程序经过4步:
- 预处理:宏定义展开、头文件展开、条件编译等,同时将代码中的注释删除,这里并不会检查语法
- 编译:检查语法,将预处理后文件编译生成汇编文件
- 汇编:将汇编文件生成目标文件(二进制文件)
- 链接:C语言写的程序是需要依赖各种库的,所以编译之后还需要把库链接到最终的可执行程序中去

6.2 编译指令
GCC命令
预处理: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
一步编译:gcc hello.c -o hello
| 选项 | 含义 |
|---|---|
| -u file | 指定生成的输出文件名为file |
| -E | 只进行预处理 |
| -S | 只进行预处理和编译 |
| -c | 只进行预处理、编译和汇编 |
| 文件后缀 | 含义 |
|---|---|
| .c | C 语言文件 |
| .i | 预处理后的 C 语言文件 |
| .s | 编译后的汇编文件 |
| .o | 编译后的目标文件 |
5.代码分析
| 代码 | 含义 |
|---|---|
| #include<stido.h> | 包含stdio.h这个头文件 |
| main()函数 | 主函数,有且只有一个,是C语言程序的入口,程序是从main函数开始执行, |
| {} | 代码块,一个代码块内部可以有一条或者多条语句,每句以分号结尾 |
| // /**/ | 行注释与块注释,编译器忽视的内容,用于解释说明代码内容 |
| printf函数 | C语言库函数,功能是向标准输出设备输出一个字符串 |
| \n | 回车换行 |
| return语句 | 代表函数执行完毕,返回return代表函数的终止,0代表程序执行成功, -1代表程序执行失败 |
| system函数 | 在已经运行的程序中执行另外一个外部程序 |
