C语言入门(一)——C语言程序的执行过程和构造

C语言程序的执行和构造

  • C语言程序的执行过程
    • 预处理阶段
    • 编译阶段
    • 汇编阶段
    • 链接阶段
    • 生成可执行文件
  • C语言程序的构造
    • 注释
    • 头文件
    • 宏定义
    • 函数的知识准备
        • 函数简介
        • 函数定义
    • 主函数(main函数)
      • 主函数(main函数)返回值的应用
    • 其他函数
      • 库函数
      • 自定义函数
      • 函数声明

C语言程序的执行过程

预处理阶段

预处理器将提前执行部分指令,如处理预处理指令,删除注释等。源代码经过预处理器的处理后会输出新的代码(删除注释、展开宏、包含头文件)。
在预处理阶段,预处理器会处理以井号#开头的预处理指令。常见的预处理指令有#include#define等。预处理器会根据这些指令的要求进行相应的操作。

编译阶段

在这个阶段,源代码被翻译成汇编语言,汇编语言是一种低级语言。

汇编阶段

汇编器将汇编代码转换成机器代码,C语言程序被二进制数表示,使得程序可以被计算机识别。

链接阶段

C语言程序中经常有多个源文件,链接器解决了不同源文件之间的符号引用和地址关联。如果程序引用了其他源文件或库文件中的函数或变量,链接器将确保这些引用得到正确的解析。

生成可执行文件

链接器将生成可执行文件。


C语言程序的构造

注释

注释可以提高代码的可读性,在程序中的某些地方加入注释是一个非常明智的选择,不仅便于修改代码,而且在团队合作中起到了至关重要的作用。

双斜杠之前的文字不受影响//有些编译器支持双斜线表示注释双斜线之后的文字
之前的文字不受影响/*有的编译器支持用这样的符号注释中间的文字
有的编译器支持用这样的符号注释中间的文字
有的编译器支持用这样的符号注释中间的文字
有的编译器支持用这样的符号注释中间的文字*/之后的文字不受影响

头文件

#include开头的部分,我们称之为头文件,头文件中会出现函数声明,宏的定义等。
我们可以使用以下两种方式引用头文件。

#include<>
#include""

如果说对于C语言的研究足够深入,程序员是可以自行编写头文件的。


宏定义

可以使用 #define 指令定义宏,用于进行文本替换。

#define PAI 3.1415926

执行宏定义指令之后,程序中的常量PAI都会被替换为3.1415926。


函数的知识准备

函数简介

在C语言中,函数是一段执行特定任务的代码块,可以被程序中其他地方调用。函数提供了一种将代码模块化和组织起来的方式,使得程序更加结构化、易读和易维护。

函数定义

函数的定义包括函数的返回类型、函数名、参数列表和函数体。
比如一个计算加和的简单函数:

int add(int a, int b)
{
   return a + b;
}

int是函数的返回类型,return后面的部分是返回值。因为是计算两个int型的整数(a和b)的和,所以返回值的返回类型是int。
add是函数名,(int a,int b)是参数列表,这里的a和b叫做形参。调用函数时需要使用函数名和实参列表,下面是调用add函数的一个例子。

int result = add(3, 5);  

其余部分就是函数体,函数体必须用{}框在一起。


主函数(main函数)

主函数,即main函数。主函数的特殊性是在一个程序中,只能出现一个main函数,而且在执行程序时会从。

下面是初学者最常用的main函数定义。

int main()
{
	return 0;
}

在历史上,曾出现返回值为void的主函数,

void main()

主函数(main函数)返回值的应用

返回值为 0 表示程序成功执行。
返回值为非零( 1或其它非零整数)表示程序执行过程中发生了错误。

int main() 
{
    if (//出现错误) 
    {
        return 1; // 返回非零值表示发生错误
    }
    return 0;
}

在Linux环境中,使用echo $?命令行可以获取上一个命令的退出状态。
假设有一个用C语言编写的名为test的可执行文件,可以使用以下的代码:

./test
echo $?

根据输出的数据,就可以验证可执行文件test是否正确执行。


其他函数

库函数

库函数是一组在编程中可被重复使用的已经被封装好的函数集合。这些函数通常包含在标准库或外部库中。也就是在头文件中可供调用的函数。

自定义函数

自定义函数是由程序员自己写的函数,自定义函数写在main函数之外,头文件之后。

函数声明

如果自定义函数在主函数后面,那么就需要在main函数之前声明函数。声明包括函数的返回类型、函数名和参数列表,但不包括函数体。
下面是声明add函数的例子:

int add(int a, int b);

库函数的声明被在头文件中,不需要声明。

你可能感兴趣的:(C语言,c语言,算法,开发语言)