跳转至

函数的应用

函数之间的调用

main 调用 f,f 里面还可以再调用另一个函数 f2。

main → f → f2
main ← f ← f2

进入调用的函数,执行完再返回,不是所有函数一起执行。

image-20250915152910631

变量的作用范围

函数里的参数、局部变量,只在对应的作用范围里使用。

f 里的 a,与 main 里的 a,即使同名,也不是同一个局部变量,不打架。

合理命名,把变量定义在合适的位置,是基本的代码习惯。

image-202509151512068 74

下面这份代码,想一想会不会报错,为什么?

image-20250915151740098

传值参数

普通 int 参数,传进去的是值的副本。

#include <iostream>

using namespace std;

void change(int x) {
    x++;
}

int main() {
    int x = 10;
    change(x);

    cout << x; // 仍然输出10

    return 0;
}

函数里的 x 是副本,改了它,main 里的 x 不变。引用和数组参数,后面再学。

判断质数的代码模板

请严格模仿↓↓↓

#include <iostream>

using namespace std;

bool is_prime(int n) {
    if (n < 2) return false;
    for (int i = 2; i <= n / i; i++)
        if (n % i == 0) return false;

    return true;
}

int main() {
    int x;
    cin >> x;

    if (is_prime(x)) cout << "Yes";
    else cout << "No";

    return 0;
}

小于 2,返回 false。 不是质数。

找到因数,返回 false。 不用继续试。

循环结束,返回 true。 试完都没找到因数,是质数。

return true; 放在循环外面。 不能只试了一个数,就判断是质数。

i <= n / i 与这里的 i * i <= n 判断范围相同,但避免了乘法超出 int 范围。

函数声明(先不看)

如果把函数的完整定义写在 main 后面,需要在调用前,先声明它。

int f(int a, int b); // 函数声明,末尾有分号

初学时,先把函数完整写在 main 前面,写法简单一些。