函数里的变量

8 分钟

在函数里 int i; 这样定义出来的变量,叫局部变量。它有两个特点:作用范围只在这个函数内(别的函数看不见),寿命也只到函数结束(函数一返回,它就被销毁)。

void a() {
    int i = 5;      // 这是 a 的 i
    cout << i;
}
void b() {
    int i = 99;     // 这是 b 的 i,跟上面完全无关
    cout << i;
}

两个函数里都有 i,会不会打架?不会。它们是各自函数内的两个不同变量,同名只是巧合,互不影响。就像两个班都有个叫“小明”的同学,点名时不会混。

好处很实际:写函数时不用担心变量名跟别人撞车,循环计数器随便用 ij

要区分的是全局变量——写在所有函数外面的变量,谁都能看见、谁都能改。全局变量方便,但容易被某个函数悄悄改乱,出了 bug 很难定位。考试和平时都建议:能用局部变量就别用全局,把数据关在需要它的函数里。

小纸条

两个函数里都有个变量叫 i,会互相干扰吗?

登录 后可看答案

函数里的变量 · 考级冲刺 · op599 课程