前言恭喜你来到第二章在上一章中我们了解了 C 语言是什么、从哪来、能做什么。从这一章开始我们将正式进入 C 语言的学习。很多人学编程的第一课都是 Hello World但很少有人把这个程序的每一行都讲透。今天我们就从一个最简单的 C 程序入手从上到下、从外到内把每一个部分都拆开来讲。本章我们会回答三个问题程序开头的#include stdio.h是什么int main()为什么是程序的入口大括号里面的语句都是什么意思准备好了吗让我们从一个完整的 C 程序开始一、先看全貌一个 C 程序长什么样在拆解之前先让我们看一个完整的、最简单的 C 程序#include stdio.h // ← 第一部分头文件 int main() // ← 第二部分主函数 { // ← 函数开始 printf(Hello\n); // ← 第三部分语句 return 0; // ← 第三部分语句 } // ← 函数结束一个 C 程序基本就是由这三部分组成的部分是什么作用头文件#include xxx.h引入 工具包让你能用别人写好的函数主函数int main() { ... }程序的入口所有程序从这里开始执行语句大括号里的每一行具体要做的事情一行一个动作下面我们就从上到下一个一个来讲。二、头文件#include stdio.h2.1 什么是头文件头文件就是扩展名为.h的文件h 是header头的缩写。你可以把它理解为一个 说明书或者工具清单—— 里面声明了有哪些函数可以用、有哪些类型可以用。2.2 #include 是干什么的#include是一个预处理指令它的作用是把指定的文件内容原封不动地 粘贴 到这里。#include stdio.h这句话的意思就是 把stdio.h这个文件的内容插到我这个位置来。为什么要这么做因为printf这个函数不是你写的它是 C 语言标准库提供的现成工具但编译器不认识printf是什么stdio.h里写了printf的 说明书包含了这个头文件编译器就知道哦printf是个函数可以用通俗理解头文件就像餐厅的菜单。你去餐厅吃饭不用进厨房看厨师怎么做菜看菜单就知道有什么菜可以点。头文件就是 菜单告诉你标准库提供了哪些函数可以用。2.3 stdio.h 是什么stdio.h是最常用的一个头文件它的全称是standardinputoutput → 标准输入输出顾名思义这个头文件里声明的都是和输入输出相关的函数函数作用printf打印输出到屏幕scanf从键盘读取输入getchar读取一个字符putchar输出一个字符......所以记住只要你要用printf或者scanf开头就必须写#include stdio.h。后续还有很多标准的头文件介绍此处就暂时先介绍这一个头文件。2.4 尖括号和双引号的区别细心的你可能会发现#include有两种写法#include stdio.h // 尖括号 #include myfile.h // 双引号区别是尖括号 去系统目录找头文件标准库的头文件都用这个双引号 先去当前目录找找不到再去系统目录找自己写的头文件用这个简单记标准库的头文件用尖括号自己写的用双引号。三、主函数int main ()3.1 什么是主函数主函数就是main函数它是程序的入口。什么叫 入口就是程序开始运行时第一行要执行的代码一定在 main 函数里面。就像进电影院一定要从大门进一样程序开始执行一定要从 main 函数开始 —— 不管你写了多少个函数程序都是从main开始跑的。3.2 main 函数的写法最标准、最通用的写法是int main() { // 这里写要执行的语句 return 0; }我们来拆解一下部分含义int函数的返回值类型表示这个函数执行完会返回一个整数main函数名就叫 main不能改( )括号里是参数列表空的表示没有参数{ ... }大括号里是函数体就是这个函数要做的事情return 0返回值返回 0 表示 程序正常结束3.3 为什么要 return 0return 0的意思是我执行完了返回一个数字 0 给操作系统。操作系统拿到这个返回值就能知道程序运行得怎么样返回0→ 程序正常结束返回非 0→ 程序异常结束比如出错了这是一个约定俗成的规矩。对初学者来说记住 main 函数最后要写return 0; 就可以了。3.4 大括号 { } 的作用大括号{ }表示一个范围、一个代码块。{表示开始}表示结束main 函数的大括号就把 属于这个函数的所有代码 都包在里面了。新手提示大括号一定要成对出现有左括号就一定要有右括号。很多新手写着写着就忘了写右括号编译器会报一堆莫名其妙的错。建议大家写的时候先把{ }一起写好再往里面填内容。四、语句函数里面写什么讲完了程序的 骨架头文件 主函数我们来看看 血肉—— 函数里面的语句。4.1 什么是语句语句就是程序执行的一个基本单位你可以理解为 一条命令。每条语句完成一个动作printf(Hello\n); // 输出一句话 → 一个动作 int a 10; // 定义一个变量 → 一个动作 a a 1; // 变量加1 → 一个动作程序从上往下一条一条地执行语句。4.2 分号语句的结束标志每条语句都要以分号;结尾。分号就像语文里的句号表示一句话说完了。printf(Hello) // ❌ 错误少了分号 printf(Hello); // ✅ 正确忘写分号是新手排名第一的错误编译器会报错而且报错信息可能还挺吓人的。记住写完一句就加个分号。4.3 输出语句printfprintf是最常用的输出函数作用是把内容打印到屏幕上。基本用法printf(要输出的内容);例子printf(Hello, World!);输出Hello, World!4.4注释注释就是写给人看的说明文字编译器会直接忽略它不参与执行。为什么要写注释因为代码是写给机器执行的但也是写给人看的过三个月再看自己的代码你可能会问这写的啥玩意儿好的注释能帮你理清思路单行注释以//开头从//到行尾都是注释。// 这是一行注释 printf(Hello); // 这也是注释多行注释以/*开头以*/结尾中间的都是注释。/* 这是多行注释 可以写很多行 编译器都会忽略 */经验之谈好的代码本身就是最好的注释。变量名起得好、逻辑写得清晰比写一堆废话注释有用得多。注释用来解释 为什么这么写而不是 写了什么。五、完整程序再回顾学完了三大部分让我们再回过头来看这个 Hello World 程序现在你应该每一行都能看懂了// 第一部分头文件 // 包含标准输入输出头文件这样才能用printf函数 #include stdio.h // 第二部分主函数 // int 表示返回值是整数 // main 是函数名程序从这里开始执行 int main() { // ← 函数开始 // 第三部分语句 // 调用printf函数输出一句话 // \n 表示换行 printf(Hello, C语言\n); // 返回0表示程序正常结束 return 0; } // ← 函数结束是不是感觉清晰多了一个 C 程序的结构就是这么简单上面写头文件要用什么工具下面写主函数程序入口主函数里面写语句具体做什么六、写在最后The only way to learn a new programming language is by writing programs in it.——Dennis Ritchie丹尼斯・里奇C 语言之父翻译成中文就是学习一门新编程语言的唯一方法就是用它写程序。这句话出自 C 语言的创造者丹尼斯・里奇本人。在本章的最后把这句话送给每一位正在踏上 C 语言学习之路的你。编程不是看会的是练会的。代码敲得越多理解就越深bug 踩得越多经验就越足。不要怕写错不要怕报错 —— 每一个错误都是进步的阶梯。⚠️ 关于本文由于笔者水平有限文中难免存在疏漏、错误或表述不够准确的地方。如果你在阅读过程中发现了任何问题 —— 无论是概念错误、代码 bug、还是表述不清 —— 都欢迎在留言指正我会及时修正。技术之路道阻且长行则将至。我们互相学习共同进步