C++基础之static关键字(1)--静态局部变量详解

本篇文章主要讲解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();
}

结果:
在这里插入图片描述
可以发现:
局部变量在定义它的函数内有效,但是函数返回后失效。因此,每次调用函数,局部变量都会是使用初始默认值操作。

静态局部变量在程序中仅被分配一次内存,函数返回后,该变量不会消失。此后每次调用函数,都会使用内存中最新的值操作。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/baidu_41191295/article/details/111827767