C 语言学习对设备配置门槛较低,入门阶段无需安装大容量 IDE。仅需编译器与文本编辑工具即可开展练习。下文依次完成编译器安装、首个程序编写,梳理编译到运行的完整流程。

安装编译器

编译器把 C 源码翻译成机器码。常用的有两个:GCC 和 Clang。按系统选:

  • Windows:三种做法。装 Visual Studio Code + MinGW-w64,把 bin 目录加入 PATH(推荐,轻量可控);或用 MSYS2 里的 MinGW 包(pacman -S mingw-w64-x86_64-gcc);或装 WSL 后在 Linux 里用 GCC。完整步骤见 Windows 安装 C 编译器
  • macOS:终端执行 xcode-select --install,安装 Command Line Tools,会附带 Clang。完整步骤见 macOS 安装 C 编译器
  • Linux:用发行版包管理器。Ubuntu/Debian 用 sudo apt install build-essential;Fedora 用 sudo dnf install gcc;Arch 用 sudo pacman -S gcc。完整步骤见 Linux 安装 C 编译器

装完在终端验证:

gcc --version
clang --version

能打印出版本号就成功了。暂时不想在本地折腾的话,也可以用本站在线编译器直接跑下面的代码。

第一个程序:Hello, World!

新建文件 hello.c,输入以下内容。建议亲手敲一遍而不是复制,光看和真正动手,差得挺远。

C 语言第一个程序 Hello World运行
#include <stdio.h>

int main(void) {
    printf("Hello, World!\n");
    return 0;
}

在终端里编译并运行:

# Linux / macOS
gcc -Wall hello.c -o hello && ./hello

# Windows (MinGW)
gcc -Wall hello.c -o hello.exe && hello.exe

屏幕输出:

Hello, World!

这里的 -Wall 让编译器打开所有常见警告,能帮初学者省去很多查错的时间。

逐行拆解

每个部分拆开看:

  • #include <stdio.h>:C 程序靠库提供功能。最常用的输出函数 printf 定义在 stdio.h 这个头文件里,这行就是把它引入你的程序。
  • int main(void):程序被操作系统启动后,执行的第一段代码总是 main 函数。前面的 int 表示要返回一个整数;void 表示它不需要命令行参数。
  • { ... }:main 的函数体,花括号里是按顺序执行的语句。
  • printf("Hello, World!\n");:调用输出函数。\n 是转义序列,表示换行。C 语言里每条完整语句必须以分号 ; 结尾,编译器靠分号识别语句边界。
  • return 0;:把 0 返回给操作系统,表示程序正常结束。非 0 值通常表示出错,脚本、CI 系统会读这个退出码判断成败。

改一改再跑:把字符串换成你的名字;故意删掉分号,看编译器报什么错;删掉 #include,看它怎么提示 printf 未声明。

编译到底发生了什么

C 不像 Python 那样逐行解释执行,而是先把整个源码翻译成机器指令,生成可执行文件,再由操作系统运行。这个过程拆成四步:

hello.c(源码)
   ↓ ① 预处理(preprocessing):展开 #include、处理 #define 宏
   ↓ ② 编译(compiling):把 C 源码翻译成汇编
   ↓ ③ 汇编(assembling):把汇编翻译成机器码,生成目标文件 hello.o
   ↓ ④ 链接(linking):把 printf 等库函数接进来,生成可执行文件 hello
hello(可执行文件)

这一步暂时不用记细节,对整体流程有个概念就够。后面学到宏(#define)和多文件工程时,会再回来深入理解这四步。

常见错误快速排查

报错特征常见原因
expected ';' before ...漏了分号,上一行结尾补 ;
implicit declaration of function 'printf'忘了 #include <stdio.h>
undefined reference to 'main'没有 main 函数,或拼写/大小写不对
gcc: command not found编译器没装或没加入 PATH

调试代码可以遵循这样的节奏:先读懂报错,对照资料排查问题,修改完成后再次编译。保持这个习惯,越往后写代码越轻松。