跳到主要内容

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 命令