# 第一个程序

```c
#include <stdio.h>
int main()
{
    puts("hello world！");
    return 0;
}
```

第 1\~3 行、第 5\~6 行是固定的，所有C语言源代码都必须有这几行。

> 在C语言中，字符串需要用双引号" "包围起来，C语言中文网什么也不是，计算机不认识它，"C语言中文网"才是字符串。

第1行：引入头文件 stdio.h，引入头文件使用`#include`命令，并将文件名放在`<>`中，#include 和 `<>`之间可以有空格，也可以没有。

第2行：固定，开始定义主函数 main。main 是程序的入口函数，一个C程序必须有 main 函数，而且只能有一个。

第3行：固定

第4行：调用 puts 函数向显示器输出字符串。

第5行：固定，main 函数的返回值。程序运行正确一般返回 0。

第6行：固定

> 综上所述：第2\~6行代码定义了主函数 main，它的返回值是整数 0，程序将从这里开始执行。main 函数的返回值在程序运行结束时由系统接收。

有的教材中将 main 函数写作：

```c
void main()
{
    // Some Code...
}
```

这在 VC6.0 下能够通过编译，但在 C-Free、GCC 中却会报错，因为这不是标准的 main 函数的写法，大家不要被误导，最好按照示例中的格式来写。

## 头文件的概念

C语言开发者们编写了很多常用函数，并分门别类的放在了不同的文件，这些文件就称为**头文件（header file）**。每个头文件中都包含了若干个功能类似的函数，调用某个函数时，要引入对应的头文件，否则编译器找不到函数。

引入头文件使用`#include`命令，并将文件名放在`<>`中，#include 和 `<>`之间可以有空格，也可以没有。

头文件以`.h`为后缀，而C语言代码文件以`.c`为后缀，它们都是文本文件，没有本质上的区别，#include 命令的作用也仅仅是将头文件中的文本复制到当前文件，然后和当前文件一起编译。你可以尝试将头文件中的内容复制到当前文件，那样也可以不引入头文件。

`.h`中代码的语法规则和`.c`中是一样的，你也可以`#include <xxx.c>`，这是完全正确的。不过实际开发中没有人会这样做，这样看起来非常不专业，也不规范。

较早的C语言标准库包含了15个头文件，stdio.h 和 stdlib.h 是最常用的两个：

* **stdio** 是 standard input output 的缩写，stdio.h 被称为“标准输入输出文件”，包含的函数大都和输入输出有关，puts() 就是其中之一。
* **stdlib** 是 standard library 的缩写，stdlib.h 被称为“标准库文件”，包含的函数比较杂乱，多是一些通用工具型函数，system() 就是其中之一。&#x20;
