本文目标
- 了解C语言有什么用途 ☆
- 理解一个C程序通常包含哪些部分 ☆☆
- 理解一个C程序中各部分的职责 ☆☆☆
- 拓展部分 ☆☆☆
一、C语言有什么用途
- 作用:
执行特定的任务,解决具体的问题。
- 举例:
假设现在世界上的所有计算器都爆炸了,那人类要怎么计算呢?
我们可以利用C语言,写出一个C程序,这个程序的作用,就是来帮助用户进行基本的数学运算,运行这个C程序就相当于在使用一个计算器。
- C语言和C程序:
C语言: C语言就像是书面语言(如英语、中文等)。它是一套用于编写和表达想法的规则和语法。
C程序: C程序就像是一篇文章(如小说、文章、诗歌等)。它使用C语言的规则和语法来表达具体的内容和完成特定的任务。
二、一个C程序包含哪些部分?
- 预处理指令
- 头文件:在程序的顶部,通过
#include
指令包含标准库或用户自定义库,以便使用其中的函数和定义。 - 宏定义:通过
#define
指令定义常量或宏,以便在整个程序中使用。
- 函数
- 主函数:
main
函数是程序的入口点,程序从这里开始执行。 - 其他函数:用户定义的函数和库函数,辅助完成特定任务或操作。
- 变量与常量
- 变量:存储数据的命名空间,可以在函数内或全局范围内定义。
- 常量:定义后不能更改的值,使用
const
关键字或#define
指令定义。
- 语句和表达式
- 语句:程序的基本执行单元,包括赋值、控制结构(如
if
、for
、while
)等。 - 表达式:计算并返回值的代码片段,可以嵌入在语句中。
- 输出结果
- 输出函数:如
printf
函数,用于将结果输出到控制台或文件。
- 注释
- 单行注释:使用
//
注释单行。 - 多行注释:使用
/* ... */
注释多行。
作为一个零基础的初学者,你一定看不懂这第二段的内容,但没有关系,你只需要对这六个部分的名称有个印象即可,让我们重点来看下一部分。
三、一个C程序中各部分是干什么的? ☆☆☆
一个完整的C程序就像是餐馆从开门营业到完成一笔订单的全过程
1.开门准备——(预处理指令)
- 餐馆在开门之前,先准备好菜单,列出需要的食材和工具(头文件),还包括一些固定的配方和标准(宏定义)。
2.接收订单——(函数)
- 餐馆开门营业后,主厨(
main()
函数)负责统筹整个厨房的工作。主厨决定要做哪道菜,并安排其他厨师(其他函数)负责不同的菜品或烹饪步骤。
3.准备食材——(变量与常量)
- 厨师们根据订单准备食材。可变的原材料(变量),如肉类、蔬菜,可以根据订单的不同而变化。固定要用的配料(常量),如盐、胡椒等,不会改变。
4.烹饪过程——(语句和表达式)
- 厨师按照菜谱一步一步地进行烹饪(语句和表达式)。这包括加热、调味、装盘等步骤。
5.上菜——(输出结果)
- 菜做好后,厨师将菜品上桌(程序输出结果)。这相当于程序执行后,输出结果给用户。
6.记录和改进——(注释)
- 在烹饪过程中,厨师可能会记录一些笔记(注释),帮助改进菜谱或指导新厨师。
相信看到这里,你已经对一个C程序的框架结构有了初步的了解。让我们来看下面的示例,你并不需要知道代码的含义和写法,你只需要关注各个部分大概会出现在一个C程序的哪个位置即可。
比如,预处理指令一般在程序的开头位置;主函数一般处于程序的核心部分;主函数的周围可能会有一些其他函数,就像主厨周围会有一些帮厨一样,但主厨只有一个。
#include <stdio.h> // 预处理指令(头文件):包含标准输入输出头文件,相当于厨房工具清单(相当于把做饭需要用的工具拿到厨房)
#define PI 3.14 // 预处理指令(宏定义):定义常量PI,相当于固定配料(比如说明了今天上菜要用的盘子都是固定规格的圆盘,没有其他样式的)
void printMessage();// 函数声明:相当于菜单上的菜名和准备步骤(比如说明了有种食物的做法是水煮)
int main() { // 主函数:相当于主厨开始工作
int radius = 5; // 变量声明:相当于准备食材
float area; // 变量声明:相当于准备食材
// 语句和表达式:计算圆的面积,相当于烹饪步骤
area = PI * radius * radius;
// 语句和表达式:打印结果,相当于将菜品上桌
printf("The area of the circle is: %f\n", area);
// 语句和表达式:调用其他厨师准备的配菜
printMessage();
return 0; // 输出结果:返回0表示工作顺利完成,相当于订单完成
}
// 函数定义:相当于其他厨师的工作步骤(关于水煮做法的详细步骤)
void printMessage() {
printf("This is a simple C program.\n");
}
作为一个零基础的初学者,你可能依然会对一个具体C程序的各个实现部分有各种各样的困惑,但是你只需要从这篇文章里大概知道C程序的模糊样子即可,之后的学习路中,你依然可以不断返回到这篇文章,你会对程序的结构有越来越清晰的认知。
四、拓展部分
输出结果,又叫函数返回值,我们已经说过了,函数可分为主函数和其他函数。
让我们继续使用餐馆的比喻来说明 main
函数和其他函数的返回值:
主厨(main
函数)的最终报告
主厨(main
函数)负责整个餐厅的运行,最终会向餐厅经理(操作系统)报告一天的营业情况(程序执行结果)。
return 0;
:相当于主厨告诉餐厅经理:“今天一切顺利,顾客满意。”return 1;
或其他非零值:相当于主厨告诉餐厅经理:“今天遇到了一些问题,有些顾客不满意。”
其他厨师(其他函数)的输出
其他厨师(其他函数)负责具体的菜品或烹饪步骤,他们也会有自己的输出结果,但这些输出通常是给主厨(main
函数)或者其他厨师看的,而不是直接给餐厅经理(操作系统)看的。
- 返回值(return value):厨师完成工作后,可能会给主厨一个反馈。例如,一个函数可能返回一个计算结果,或者返回一个状态码表示操作是否成功。
#include <stdio.h>
// 一个辅助函数,计算两个数的和
int add(int a, int b) {
return a + b; // 返回两个数的和,相当于厨师完成了一道菜并告诉主厨结果
}
int main() {
int result;
// 调用辅助函数,计算5和3的和
result = add(5, 3);
// 输出结果
printf("The result of adding 5 and 3 is: %d\n", result);
// 主函数返回0,表示程序成功结束
return 0;
}
在这个例子中:
add
函数:像是一个厨师,他计算两个数的和,并把结果(return a + b;
)告诉主厨。main
函数:主厨调用add
函数获取计算结果,然后将结果打印出来(printf
),最后向系统报告程序执行情况(return 0;
)。
其他函数的返回值
其他函数可以返回不同的类型和值,这些返回值可以用于:
- 计算结果:如数学运算的结果。
- 状态信息:如操作是否成功(通常返回0表示成功,非零值表示失败)。
- 数据处理:如查找、排序等操作的结果。
关于函数进一步的比喻
- 多厨师协作:
- 每个厨师(函数)负责一部分工作,并把结果交给其他厨师或主厨。
- 主厨(
main
函数)最终汇总所有厨师的工作,并向餐厅经理(操作系统)报告。
- 具体操作:
- 有的厨师(函数)可能只是辅助操作,不需要返回值(如清洗食材)。
- 有的厨师(函数)返回的值可能非常重要,直接影响到最终的菜品质量(如关键步骤的操作结果)。