编写一个函数,用于说明形参、静态局部变量和非静态局部变量的区别
时间: 2024-02-01 07:15:32 浏览: 138
在C++中,形参、静态局部变量和非静态局部变量都是函数内部声明的变量,但它们之间有一些区别。
形参是在函数定义时声明的参数,用于接收函数调用时传递的参数。形参只存在于函数调用期间,函数执行完毕后就会被销毁。形参是局部变量,其作用域只在函数内部。
静态局部变量是在函数内部声明的具有静态存储持续时间的变量。静态局部变量只会在第一次调用函数时被初始化,并且在函数调用结束后不会被销毁,而是会一直存在于程序的整个生命周期中。静态局部变量的作用域也只限于函数内部。
非静态局部变量也是在函数内部声明的变量,但是它们不具有静态存储持续时间。非静态局部变量在每次函数调用时都会被初始化,并且在函数调用结束时会被销毁。非静态局部变量的作用域也只限于函数内部。
下面是一个简单的示例代码,演示了这些变量的区别:
```c++
#include <iostream>
void myFunction(int x, int y) {
static int staticVar = 0;
int nonStaticVar = 0;
std::cout << "x = " << x << ", y = " << y << std::endl;
std::cout << "staticVar = " << staticVar << ", nonStaticVar = " << nonStaticVar << std::endl;
staticVar++;
nonStaticVar++;
}
int main() {
myFunction(1, 2);
myFunction(3, 4);
myFunction(5, 6);
return 0;
}
```
输出结果为:
```
x = 1, y = 2
staticVar = 0, nonStaticVar = 0
x = 3, y = 4
staticVar = 1, nonStaticVar = 0
x = 5, y = 6
staticVar = 2, nonStaticVar = 0
```
可以看到,形参在每次函数调用时都会重新初始化。静态局部变量的值在多次函数调用之间是保持不变的,而非静态局部变量的值在每次函数调用时都会重新初始化。
阅读全文