C++ 函数的局部变量和静态变量
函数的局部变量仅当函数被调用时才存在,一旦函数被终止,系统就把局部变量删除。因此,当下一次调用该函数时,不能保留上一次的局部变量的值。函数每次调用时,系统会对局部变量进行初始化。
函数的静态变量是在局部变量的数据类型前面加上static 关键字。它与局部变量不同,初始化仅能执行一次。当函数终止时将静态变量保存在独立的内存单元中,所以下一次调用该函数时,静态变量能保持它原来的值。可以在不同的函数中使用相同的静态变量名,这不会造成编译器的混淆,因为编译器一直跟踪每个函数的静态变量。
#include "iostream.h"
double mean(double x);
void main()
{
double x, y;
x = mean(1); //第一次调用时为:1/2
y = mean(1); //第二次调用时为:1/3
cout<<"x="<<x<<", y="<<y<<endl; //x=0.5, y=0.333333
}
double mean(double x)
{
static double z, y = 1;
y = x + y;
z = x * x;
return z / y;
}