函数定义与调用
概念讲解
函数定义
1234返回类型 函数名(参数列表) {
函数体;
return 返回值;
}示例
123int add(int a, int b) {
return a + b;
}函数调用
12int result = add(3, 5);
cout << result; // 8参数传递
123456789// 值传递
void func(int x) {
x = 100; // 不影响原变量
}
// 引用传递
void func(int& x) {
x = 100; // 影响原变量
}返回值
123int max(int a, int b) {
return a > b ? a : b;
}变量作用域
局部变量
123void func() {
int x = 10; // 局部变量
}全局变量
12345int x = 10; // 全局变量
void func() {
cout << x; // 可以访问
}考点分析
初赛考查方式
- 选择题: 函数定义
- 程序阅读: 函数调用
- 填空题: 参数传递
常见题型
- 函数定义
- 参数传递
- 递归函数
例题精讲
例题 1:函数定义
题目: 定义一个函数求两个数的最大值。
解答:
123int max(int a, int b) {
return a > b ? a : b;
}例题 2:值传递
题目: 以下代码的输出是什么?
12345678910void func(int x) {
x = 100;
}
int main() {
int a = 10;
func(a);
cout << a;
return 0;
}解答:
值传递,不影响原变量
输出:10练习题
- 定义一个函数求 n 的阶乘。
查看答案
1234long long factorial(int n) {
if (n <= 1) return 1;
return n * factorial(n - 1);
}或使用循环:
1234567long long factorial(int n) {
long long result = 1;
for (int i = 1; i <= n; i++) {
result *= i;
}
return result;
}- 值传递和引用传递的区别是什么?
查看答案
| 特性 | 值传递 | 引用传递 |
|---|---|---|
| 语法 | void func(int x) |
void func(int& x) |
| 对原变量 | 不影响 | 影响 |
| 用途 | 只读参数 | 需要修改参数 |
123456void byValue(int x) { x = 100; }
void byRef(int& x) { x = 100; }
int a = 10;
byValue(a); // a 仍然是 10
byRef(a); // a 变为 100- 什么是递归函数?
查看答案
递归函数是调用自身的函数。
递归三要素:
- 边界条件:递归终止的条件
- 递推关系:大问题和小问题的关系
- return 返回值:返回结果
示例(求阶乘):
1234int factorial(int n) {
if (n <= 1) return 1; // 边界条件
return n * factorial(n - 1); // 递推关系
}易错点
⚠️ 注意:
- 函数要有返回值
- 值传递不影响原变量
- 引用传递会影响原变量
- 注意变量的作用域