在这个程序中,因为s_nvalue已被声明为静态的,s_nvalue仅仅是创建和初始化(1)一次。当它超出范围,它不被破坏。每一次的函数incrementandprint()称,s_nvalue的价值是无论我们把它之前。因此,该程序的输出:
2
3
4
使用匈牙利表示法,它是常见的固定持续时间的变量前缀“s_”。一些程序员使用“S”(我们不喜欢因为这封信被更好的用于结构)或“c_”(我们不喜欢因为它不是为记)。
一个固定的时间局部变量最常见的用途是唯一标识符发生器。在处理程序中的类似的对象的数量很大,它分配给每个一一独特的ID号,所以他们可以识别往往是有益的。这是做的一个固定的时间局部变量很容易:
1
2
3
4
5
int GenerateID()
{
static int nNextID = 0;
return nNextID++;
第一次调用该函数时,它将返回0。 第二次,它返回1。 每次调用时,它返回一个数的一个高于以前的时间,它被称为。 你可以将这些数据作为对象的唯一ID。 因为 nnextid 是局部变量 , 它可不是“ 篡改 ” 的其他 功能 。