C++-静态局部变量

Posted 翟天保Steven

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++-静态局部变量相关的知识,希望对你有一定的参考价值。

作者:翟天保Steven
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处

特征:

1.需添加关键字static。

2.在静态存储区分配内存,始终存在直到程序结束。

3.作用域为局部,在哪个函数或者语句块内声明,则只在其内有用。

4.编译时赋初值,后续运行时再赋值没用,而是根据上次执行结束的值进行后续的操作。

5.若没初始化赋初值,则编译时自动设为0或空。

测试代码:

#include <iostream>
using namespace std;

void test1()

	static int t1 = 5;
	cout << "t1_1:" << t1 << endl;
	t1++;
	cout << "t1_2:" << t1 << endl;

void test2()

	int t2 = 0;
	cout << "t2_1:" << t2 << endl;
	t2++;
	cout << "t2_2:" << t2 << endl;

void test3()

	static int t3;
	cout << "t3_1:" << t3 << endl;
	t3++;
	cout << "t3_2:" << t3 << endl;


int main()

	for (int i = 0; i < 4; ++i)
	
		cout << i << ":" << endl;
		test1();
		test2();
		test3();
		cout << endl;
	
	system("pause");

测试结果:

0:
t1_1:5
t1_2:6
t2_1:0
t2_2:1
t3_1:0
t3_2:1

1:
t1_1:6
t1_2:7
t2_1:0
t2_2:1
t3_1:1
t3_2:2

2:
t1_1:7
t1_2:8
t2_1:0
t2_2:1
t3_1:2
t3_2:3

3:
t1_1:8
t1_2:9
t2_1:0
t2_2:1
t3_1:3
t3_2:4

总结:

       t1是静态局部变量,初始化为5,后续的4次循环中,每次都加一,即使每次循环中都有static int t1 = 5;这一步,但实际上并未赋值为5,而是继续使用上一次调用结束时的值。

       t2是普通局部变量,初始化为0,后续的4次循环中,每次都加一,那它就真的每次都只是从0加到1。

       t3也是静态局部变量,与t1不同之处在于没有人为给定初始化的值,那它自动设为0,运行的特征同t1也是一样的。

       如果文章帮助到你了,可以点个赞让我知道,我会很快乐~加油!

以上是关于C++-静态局部变量的主要内容,如果未能解决你的问题,请参考以下文章

C中什么情况下把局部变量定义为局部静态变量

C语言局部变量全局变量,局部静态变量,全局静态变量,extern,static的区别

c语言中的静态存储变量是存储在哪里的,一般啥时候用

C语言之变量作用域

全局变量局部变量静态全局变量静态局部变量在内存里的区别

C++11 静态局部变量和线程