静态局部变量

1, 静态局部变量在静态存储区内分配存储单元。在程序整个运行期间都不释放。

2, 为静态局部变量赋初值是在编译时进行的,即只赋初值一次,在程序运行时它已有初值。以后每次调用函数时不再重新赋初值而只是保留上次函数调用结束时的值。

3, 如果在定义局部变量时不赋初值的话,对静态局部变量来说,编译时自动赋初值0(对数值型变量)或空字符(对字符型变量)。

4, 虽然静态局部变量在函数调用结束后仍然存在。但其他函数是不能引用它的。

下面是static1.cxx例子

1 #include<iostream>
 2 using namespace std;
 3 
 4 int f(int a)
 5 {
 6     auto int b = 0;
 7     static int c = 3;
 8     b=b+1;
 9     c=c+1;
10     return a+b+c;
11 }
12 
13 int main()
14 {
15     int a=2, i;
16     for(i=0; i<3; i++)
17     {
18         cout << f(a) << "";
19     }
20     cout << endl;
21     return 0;
22 }

执行的结果为:

[zengtx@cmm02node01 test]$./a.out 
789

静态变量c = 上一次f(a)调用结束时c的值。

原文地址:https://www.cnblogs.com/zengtx/p/6749455.html