要创建持久变量,最好是拥有本地静态变量还是全局变量?

时间:2013-10-17 08:30:24

标签: c++ c static

假设您有类(c ++)或模块(单个c文件)。然后在你的一个函数中你想要存储一个变量的副本并保持它的值,直到下次调用该函数为止,是否更好地拥有一个全局(在c ++中可以是私有的而在c中不是extern'd)它在模块范围内)还是制作一个局部静态变量?

e.g:

void some_func_that_does_not_do_anything_useful(int arbVal)
{
    static int lastArbVal = 0;

    if (arbVal > lastArbVal)
    {
        lastArbVal = arbVal;
    }
}

我制作静态的原因是为了尽量限制其范围,但我读过的某些内容建议你应该使用全局变量,所以现在我很困惑。

什么是最好的(如果有的话)?,利弊?

1 个答案:

答案 0 :(得分:10)

这里的规则很简单:如果变量需要由多个函数访问,请将其设置为全局。如果没有,函数内的static变量通常会更好。其中一个优点是避免污染全局命名空间。

请注意,如果不需要在文件外部访问全局变量,最好将其声明为文件范围变量(即,将其声明为static

回到你的例子,我认为最好像你已经使用的那样使用static变量。