第一个C语言程序
#include <stdio.h>
int main() {
// puts 是 output string 的缩写,即在控制台输出字符串
puts("Hello,C!");
return 0;
}
源文件、编译和链接
源文件其实就是纯文本文件,它的内部并没有特殊格式。
不管我们编写的代码有多么简单,都必须经过「编译 --> 链接」的过程才能生成可执行文件:
-
编译就是将我们编写的源代码“翻译”成计算机可以识别的二进制格式,它们以目标文件的形式存在;
-
链接就是一个“打包”的过程,它将所有的目标文件以及系统组件组合成一个可执行文件。
C语言编译器
分析第一个C语言程序
#include <stdio.h>
// main()是一个函数
int main() {
// puts 是 output string 的缩写,即在控制台输出字符串
puts("Hello,C!");
return 0;
}
函数的概念
像main(){...}
这样的一段代码能够独立地完成某个功能,一次编写完成后可以重复使用,被称为函数(Function)。
自定义函数和main函数
C语言自带的函数称为库函数(Library Function)。库(Library)是编程中的一个基本概念,可以简单地认为它是一些列函数的集合,在磁盘上往往是一个文件夹。C语言自带的库称为标准库(Standard Library),其他公司或个人开发的库称为第三方库(Third-Party Library)。
除了库函数,我们还可以编写自己的函数,拓展程序的功能。自己编写的函数称为自定义函数。自定义函数和库函数在编写和使用方式上完全相同,只是由不同的机构来编写。
C语言规定,一个程序必须有且只有一个 main 函数。main 被称为主函数,是程序的入口函数,程序运行时从 main 函数开始,直到 main 函数结束(遇到 return 或者执行到函数末尾时,函数才结束)。
头文件的概念
C语言开发者们编写了很多常用函数,并分门别类的放在了不同的文件,这些文件就称为头文件(header file)。每个头文件中都包含了若干个功能类似的函数,调用某个函数时,要引入对应的头文件,否则编译器找不到函数。
实际上,头文件往往只包含函数的说明,也就是告诉我们函数怎么用,而函数本身保存在其他文件中,在链接时才会找到。
引入头文件使用#include
命令,并将文件名放在< >
中,#include 和 < > 之间可以有空格,也可以没有。
头文件以.h
为后缀,而C语言代码文件以.c
为后缀,它们都是文本文件,没有本质上的区别,#include
命令的作用也仅仅是将头文件中的文本复制到当前文件,然后和当前文件一起编译。
较早的C语言标准库包含了15个头文件,stdio.h 和 stdlib.h 是最常用的两个:
-
stdio 是 standard input output 的缩写,stdio.h 被称为“标准输入输出文件”,包含的函数大都和输入输出有关,puts() 就是其中之一。
-
stdlib 是 standard library 的缩写,stdlib.h 被称为“标准库文件”,包含的函数比较杂乱,多是一些通用工具型函数,system() 就是其中之一。