可以把 int main() 看作是C语言程序的“总开关”或者“入口点”,当你运行一个C程序时,操作系统会找到这个 main 函数,并从这里开始执行你的代码。

(图片来源网络,侵删)
我们把它拆分成三个部分来理解:int、main 和 。
main - 程序的入口点
- 这是什么?
main是一个函数的名称,在C语言中,这是一个特殊且必须的函数名。 - 为什么特殊? 操作系统在启动你的程序时,它不知道程序内部有哪些函数,它会默认寻找一个名为
main的函数作为执行起点,如果你的程序里没有main函数,编译器会报错,程序也无法运行。 - 一个简单的比喻: 想象一本书的目录,
main函数就像是第一章的第一节,或者直接是第一章,读者(操作系统)会从这里开始读你的故事(程序)。
- 函数的参数列表
- 这是什么? 这对圆括号紧跟在函数名
main后面,表示main是一个函数。 - 为什么是空的 ? 这表示
main函数目前不接受任何输入参数,这是最简单、最常见的main函数形式。 - 补充知识:
main函数可以接受参数,用来接收你在命令行运行程序时输入的参数,这种形式是int main(int argc, char *argv[]),但现在,你只需要知道 表示它是一个函数即可。
int - 函数的返回值类型
- 这是什么?
int是 "integer"(整数)的缩写,它表示main函数在执行完毕后,需要返回一个整数值。 - 为什么要返回值? 这个返回值是给操作系统看的,用来告诉操作系统程序是成功执行完毕还是遇到了错误。
- 返回
0:通常表示程序成功、正常地结束了,这是一种约定俗成的做法。 - 返回非零值:通常表示程序在执行过程中遇到了某种错误或异常,不同的非零数字可以代表不同的错误类型,方便程序员或系统排查问题。
- 返回
- 一个简单的比喻: 你完成一项任务后,需要向你的老板(操作系统)报告结果,报告说“任务完成,一切顺利”(返回
0),或者报告说“任务失败,因为XX原因”(返回非零值)。
总结与代码示例
把这三部分合在一起,int main() 的完整意思就是:
这是一个名为
main的程序入口函数,它不接受任何参数,并且在执行结束后需要向操作系统返回一个整数状态码(通常是0表示成功)。
下面是一个最简单的C程序,它只包含 int main():

(图片来源网络,侵删)
#include <stdio.h> // 包含标准输入输出库,为了使用 printf 函数
int main() {
// 程序的主体代码从这里开始
printf("Hello, World!\n"); // 在屏幕上打印 "Hello, World!"
return 0; // 函数结束,返回 0 给操作系统,表示程序成功执行
}
代码解释:
#include <stdio.h>:这是一个预处理指令,告诉编译器把标准输入输出库文件stdio.h包含进来,这个库里包含了像printf(用于在屏幕上打印文本)这样的常用函数。int main():我们程序的起点。- 花括号内的所有代码都是
main函数的主体。 printf("Hello, World!\n");:调用printf函数,在控制台输出字符串 "Hello, World!"。\n是一个换行符。return 0;:这是main函数的结束语句,它向操作系统返回整数0,表示程序运行成功,然后整个程序终止。
常见变体
你可能会看到 main 函数的几种不同写法,它们都是正确的,但用途略有不同:
-
最标准的带参数形式:
int main(int argc, char *argv[]) { // ... 可以处理命令行参数 ... return 0; }argc(argument count):代表命令行参数的个数。argv(argument vector):一个字符串数组,包含了具体的参数值。- 当你需要在命令行中给程序传递信息时(
./my_program file.txt),就需要这种形式。
-
在C99及以后标准中允许的
void形式:int main(void) { // ... return 0; }void在这里明确表示“无”,即这个函数不接受任何参数,虽然int main()在C++中意味着不接受参数,但在C语言中,int main()允许参数(尽管你不使用它们),而int main(void)更清晰地表达了“无参数”的意图,两者在现代编译器下通常都能正常工作。
核心要点:int main() 是C程序的起点,它必须存在,并且返回一个整数给操作系统。
