C语言程序的执行过程
预处理阶段
预处理器将提前执行部分指令,如处理预处理指令,删除注释等。源代码经过预处理器的处理后会输出新的代码(删除注释、展开宏、包含头文件)。
在预处理阶段,预处理器会处理以井号#
开头的预处理指令。常见的预处理指令有#include
、#define
等。预处理器会根据这些指令的要求进行相应的操作。
编译阶段
在这个阶段,源代码被翻译成汇编语言,汇编语言是一种低级语言。
汇编阶段
汇编器将汇编代码转换成机器代码,C语言程序被二进制数表示,使得程序可以被计算机识别。
链接阶段
C语言程序中经常有多个源文件,链接器解决了不同源文件之间的符号引用和地址关联。如果程序引用了其他源文件或库文件中的函数或变量,链接器将确保这些引用得到正确的解析。
生成可执行文件
链接器将生成可执行文件。
C语言程序的构造
注释
注释可以提高代码的可读性,在程序中的某些地方加入注释是一个非常明智的选择,不仅便于修改代码,而且在团队合作中起到了至关重要的作用。
双斜杠之前的文字不受影响//有些编译器支持双斜线表示注释双斜线之后的文字
之前的文字不受影响/*有的编译器支持用这样的符号注释中间的文字
有的编译器支持用这样的符号注释中间的文字
有的编译器支持用这样的符号注释中间的文字
有的编译器支持用这样的符号注释中间的文字*/之后的文字不受影响
头文件
以#include
开头的部分,我们称之为头文件,头文件中会出现函数声明,宏的定义等。
我们可以使用以下两种方式引用头文件。
#include<>
#include""
如果说对于C语言的研究足够深入,程序员是可以自行编写头文件的。
宏定义
可以使用 #define
指令定义宏,用于进行文本替换。
#define PAI 3.1415926
执行宏定义指令之后,程序中的常量PAI都会被替换为3.1415926。
函数
函数简介
C语言中一个极为重要的组成部分——函数。在C语言中,函数是一段执行特定任务的代码块,可以被程序中其他地方调用。函数提供了一种将代码模块化和组织起来的方式,使得程序更加结构化、易读和易维护。
函数定义
函数的定义包括函数的返回类型、函数名、参数列表和函数体。
比如一个计算加和的简单函数:
int add(int a, int b)
{
return a + b;
}
int是函数的返回类型,return后面的部分是返回值。因为是计算两个int型的整数(a和b)的和,所以返回值的返回类型是int。
如果函数的返回类型是void,那么不用return返回值。
add是函数名,(int a,int b)是参数列表,这里的a和b叫做形参。调用函数时需要使用函数名和实参列表,下面是调用add
函数的一个例子。
int result = add(3, 5);
其余部分就是函数体,函数体必须用{}
框在一起。
函数分类
库函数
库函数是一组在编程中可被重复使用的已经被封装好的函数集合。这些函数通常包含在标准库或外部库中。也就是在头文件中可供调用的函数。
自定义函数
自定义函数是由程序员自己写的函数,自定义函数写在main函数之外,头文件之后。
主函数(main函数)
主函数,即main函数。主函数的特殊性是在一个程序中,只能出现一个main函数,而且在执行程序时会从main函数开始执行。
下面是初学者最常用的main函数定义:
int main()
{
return 0;
}
在历史上,曾出现返回值为void的主函数,只不过,现在不会再使用了。
void main()
{
}
有关函数的更多知识,详情请查看函数的调用与声明一文。