本篇文章主要讲解C++基础中static关键字的静态局部变量并进行实例演示。
一.静态局部变量定义
在讲静态局部变量时,我们首先看一下全局变量和局部变量。
1.全局变量
全局变量定义在所有函数之外,并且在其作用域内的所有函数都可以访问。
2,局部变量
局部变量定义在一个函数内部,在函数之外是不可访问的。
通过一个例子演示
int num=1;//全局变量
int Variable()
{
int num=10;//局部变量
return num;
}
int main()
{
cout<<"全局变量num="<<num<<endl;
cout<<"局部变量num="<<Variable()<<endl;
}
结果:
且全局变量可以在main函数中修改:
int num=4;
cout<<"全局变量num="<<num<<endl;
cout<<"局部变量num="<<Variable()<<endl;
修改后全局变量不再是1,而是4。
在局部变量前加上“static”关键字,就成了静态局部变量。
特点:
1).函数结束时,静态局部变量不会消失,每次该函数调用 时,也不会为其重新分配空间。
2).静态局部变量和全局变量都存放在内存的静态存储区。
二.静态局部变量和局部变量的区别
1.存储位置不同
静态局部变量存放在内存的静态存储区。
局部变量存放在栈区或者工作寄存器。
2.生命周期不同
局部变量在定义它的函数内有效,但是函数返回后失效。
静态局部变量只在定义它的函数内有效,并且程序仅分配一次内存,函数返回后,该变量不会消失。
实例演示静态局部变量和局部变量的生命周期:
void func()
{
int a=1;
a+=1;
static int f=1; //静态局部变量
f+=1;
cout<<"静态局部变量f="<<f<<endl;
cout<<"局部变量a="<<a<<endl;
}
int main()
{
func();
func();
}
结果:
可以发现:
局部变量在定义它的函数内有效,但是函数返回后失效。因此,每次调用函数,局部变量都会是使用初始默认值操作。
静态局部变量在程序中仅被分配一次内存,函数返回后,该变量不会消失。此后每次调用函数,都会使用内存中最新的值操作。