C语言
- C程序由一个或多个函数组成。
- 每个C程序必须包含一个main()函数,这是C程序要调用的第一个函数。
- 简单的函数由函数头和后面的一对花括号组成,花括号是由声明、语句组成的函数体。
#include <stdio.h> --预处理器指令
void butler(void); --函数声明
int main(); --主函数
{
int num; --声明
num = 1; --赋值
printf("hello!\n"); --调用一个函数
butter(); --调用自己的函数
}
void butler() --函数定义开始
{
printf("hello,sir!\n");
}
- C语言中大部分语句以分号结尾
- 声明语句为变量指定变量名,并标识该变量中储存的数据类型
- 变量名是一种标识符
- 赋值表达式语句把值赋给变量(把值赋给存储空间)
- 函数表达式语句用于调用指定的已命名函数,调用函数执行完毕,沿调用后面语句继续执行
编译机制
-
编译器将源代码转换为中间代码存于目标代码文件
-
链接器把目标代码、启动代码和库代码合成为可执行文件
-
源程序到可执行程序的过程
.c文件生成.obj文件的过程即为编译;.obj文件生成到.exe文件的过程即为链接;.obj文件就是一个是程序编译生成的二进制文件,当.exe文件生成以后.obj文件就会删除。
1.预处理
在预编译的过程中,主要处理源代码中的预处理指令,引入头文件,去除注释,去除所有的条件编译指令,宏的替换,添加行号,保留所有的编译器指令。当进行预处理以后的文件中将不再存在宏,所有的宏都已经被替代。当想要判断宏是都正确或者头文件包含是否正确时,可以通过预编译来查看。
2.编译
编译过程所进行的是对预处理后的文件进行语法分析,词法分析,语义分析,符号分析,然后生成汇编代码文件。
3.汇编
汇编过程将汇编代码转成二进制文件,二进制文件就可以让机器来读取。每一条汇编语句都会产生一句机器语言。
4.链接
链接程序主要是将有关联的目标文件彼此相连接,也即将在一个文件中引用的符号通该符号在另外一个文件中的定义链接起来,使得所有的这些目标文件成为一个能够被操作系统执行的文件。
链接分为静态链接和动态链接
- 静态链接:
后缀是.a,编译的时候将库文件里面代码搬迁到可执行文件中 - 动态链接:
后缀是.so,执行的时候需要转换到库文件代码执行 - 两种链接的优缺点:
静态链接产生的可执行文件体积比较大;动态链接的可执行文件体积的体积比较小;
动态链接编译的效率比较高;静态链接可执行文件的执行效率高;
静态链接的可执行文件“布局”好;
使用C语言的7个步骤
- 定义程序的目标:
思考你的程序需要哪些信息,要进行哪些计算和控制,以及程序应该要报告什么信息。 - 设计程序:
如何用程序实现目标。例如:目标用户是谁?用户界面应该是怎样的?如何组织程序?如何在程序中表示数据及用什么方法处理数据。 - 编写代码:
设计好程序后,编写代码来实现。
注意:应该给自己编写的添加文字注释。 - 编译:
编译器把源代码转换成可执行代码的程序。
①C编译器负责把C代码翻译成特定的机器语言;
②检查C语言程序是否有效,若编译器发现错误,就不生成可执行文件并报错。 - 运行程序:
- 测试和调试程序:
能运行的程序可能会出现错误(bug),查找并修复程序错误的过程叫调试。 - 维护和修改程序:
创建完程序后,你发现程序有错,或者像扩展程序的用途,这时就需要修改程序。