块作用域的静态变量
静态变量(static variable)听起来自相矛盾,像是一个不可变的变量。实际上,静态的意思是该变量在内存中原地不动,并不是说它的值不变。具有文件作用域的变量自动具有(也必须是)静态存储器。创建的具有静态存储期、块作用域的局部变量。这些变量和自动变量一样,具有相同的作用域,但是程序离开它们所在的函数后,这些变量不会消失。也就是说,这种变脸那个具有块作用域、无连接。但是具有静态存储期。计算机在多次函数调用之间会记录它们的值。在块中(提供块作用域和无连接)以存储类别说明符static(提供静态存储期)声明这种变量。
“局部静态变量”是描述具有块作用域的静态变量的另一个术语。这种存储类别也被成为内部静态存储类别(internal static storage class)。这里的内部指的是函数内部。
示例代码:
// Len_static.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <iostream>
void BlockStatic()
{
int nDataNormal = 0;
static int nDataStatic = 0; // 块作用域的静态变量
nDataNormal++;
nDataStatic++;
printf("nDataNormal=%d, nDataStatic=%d\n", nDataNormal, nDataStatic);
}
int main()
{
for (int i = 0; i < 10; i++)
{
BlockStatic();
}
}
执行结果: