C 语言 - 程序结构
这一节我们一起来看一下最基本的 C 程序结构,对 C 程序有一个大致的认识,包括程序的基本结构、如何编译、如何运作 C 程序等,以便我们可以顺利完成接下来的章节学习。
Hello World 示例
一个 C 程序通常包含以下几个部分:
- 预处理命令(例如头文件引用、宏定义等等)
- 函数(具体的功能实现)
- 变量(存储数据的地方)
- 语句(或者称为表达式)
- 注释(用于补充说明)
下面是一个简单的 C 程序,它的作用是在屏幕上打印出“Hello, World!”。
#include <stdio.h>
int main(void)
{
/* My first program in C */
printf("Hello, World! \n");
return 0;
}
让我们一起来仔细看看这个程序:
- 程序的第一行
#include <stdio.h>
是一个预处理命令,作用是告诉 C 编译器在开始编译之前需要包含 stdio.h 文件。 - 下一行
int main()
是主函数,它是 C 程序的入口,即程序开始执行的地方,一个 C 程序只能有一个主函数。 - 下一行和最后一行的大括号 及其包裹部分是
main()
函数的主体,在 C 程序中,所有的函数主体都需要大括号包裹。 - 第五行
/* ... */
被称为注释,是程序中附加的注解,通常用于解释代码的含义,注释在编译时会被 C 编译器忽略。 - 下一行
printf(...)
是 C 中可用的另一个函数,它的作用是将消息“Hello, World!” 显示在屏幕上。 - 下一行
return 0;
会终止main()
函数并返回值 0,在 Linux 系统中,返回 0 通常表示正常退出,返回值会被系统接收。
编译和运行 C 程序
下面让我们看看如何将源代码保存在文件中,以及如何编译(compile)和运行(execute)它。以下是简单的步骤:
- 首先打开一个文本编辑器(参考 C 语言开发环境),新建一个文件,并将上述 C 代码拷贝进去;
- 然后将该文件保存为 hello.c(在 C 语言中,源代码的后缀为 .c);
- 打开一个命令终端,切换到 hello.c 所在的目录;
- 执行
gcc hello.c
命令,编译 hello.c 代码; - 如果代码没有错误,此时将会生成 a.out 可执行文件;
- 输入
./a.out
执行该程序,其中./
在 Linux 系统表示当前目录,即执行当前目录下的 a.out 程序; - 现在,你应该可以在屏幕上看到 “Hello, World!”。
编译运行命令如下:
$ gcc hello.c
$ ./a.out
Hello, World!
对初学者来说,很容易出错的地方是找不到文件,或找不到编译器,你需要确保已经安装 gcc 编译器,并且处于包含源文件 hello.c 的目录中,这样才能编译运行它。
gcc 默认编译生成的可执行文件是 a.out,如果你想指定输出的文件名称,可以使用 -o
选项,例如:
$ gcc hello.c -o hello
这样生成的可执行文件即为 hello,以同样的方式运行它:
$ ./hello
Hello, World!
关于 gcc 编译器的更多用法,可参考 gcc 命令。