给操作取个名字,
让结果回到调用处
今天进入 C 函数入门。从调用一个输出提示的函数开始,再让两个整数进入函数、把计算结果返回,最后独立完成求较大值的练习。
课前复习:输入地址与初始化位置
正确补上 scanf_s 输入数组元素所需的 &,并说明交换标记需要每轮清零、比较计数需要全程累计。最小值题知道用首元素初始化,但变量名拼写有误,也漏答了从下标 1 开始比较,随后完成讲解订正。
定义函数,再调用它
在 main 前定义 show_message。前面的 void 表示不返回值,括号里的 void 表示不接收参数。函数体保存要执行的操作,定义本身不会让其中的 printf 自动运行。
void show_message(void)
{
printf("正在学习 C 语言函数\n");
}在 main 中连续执行两次 show_message();,提示便输出两次。最初把“两次调用”理解成了“定义两遍”,澄清后能够正确预测:保留定义、删除调用时,只输出 main 中的开始与结束提示。
实际运行验证了两次调用,程序正常退出,代码为 0。同一个 C 文件中不能重复定义同一个函数,但可以多次调用它。
整数参数与返回值:追踪数据的去向
int add(int first, int second)
{
int sum = first + second;
return sum;
}
// main 中的调用与输出
int result = add(8, 5);
printf("计算结果 = %d\n", result);函数名前的 int 表示返回整数;first 和 second 是接收数据的形参,调用中的 8 和 5 是实参。每个形参都要写出自己的类型。
先看右侧:add(8, 5) 把 8 传给 first,把 5 传给 second,计算出 13;return 把 13 送回调用处,再由左侧的 result 接收。
参数与结果预测全部正确,实际输出“计算结果 = 13”,退出代码为 0。return 负责向程序返回结果,屏幕上的显示由 printf 完成。
独立练习:返回两个整数中的较大值
独立编写 get_max,用三个分支处理第一个数较大、第二个数较大和两数相等。每条路线都有返回值;函数内部负责比较,main 用 max_value 接收返回值并输出。
int get_max(int first, int second)
{
if (first > second)
{
return first;
}
else if (second > first)
{
return second;
}
else
{
return first;
}
}先预测,再验证三条路线
get_max(9, 4) → 较大值 = 9
get_max(-8, -3) → 较大值 = -3
get_max(5, 5) → 较大值 = 5三项预测全部正确,三次实际运行也一致,退出代码均为 0。负数比较和相等情况都通过验证,最终文件保留 get_max(5, 5) 的调用。
最后确认:return 回到哪里
最后三题全部答对:区分两个 void 的含义;说明实参分别进入 first、second,返回值保存到 max_value;理解 return 结束整个本次函数调用,而不会把 main 一起结束,程序回到调用处继续执行。
下一课学习局部变量与作用域、整数参数按值传递,观察修改形参时调用者变量是否变化,再练习通过返回值更新变量。