用C本地/静态变量范围++(Local/static variable scope in C++)

2019-08-17 06:31发布

如果我写的是这样的:

#include <iostream>

int main()
{
    using namespace std;

    {int n;n=5;} cout<<n;
    system("pause");
    return 0;
}

编译器告诉我,n是未申报。 然后我试图使其静态的,但同样,编译器告诉我,这是未申报。 不变量declated静态有计划的范围? 如果没有,我怎么在这个程序中使用N +

Answer 1:

你混淆范围终身。 静态变量有一生等于程序的生命周期,但是他们仍然遵循范围界定基础上,他们的声明,其中的规则。



Answer 2:

n的范围仅仅是个括号:

{int n;n=5;}

所以块之外,你有没有N个变量。

使其静态只是使它的退出块即使这样下次你再进入该块的时候,你可以检索它从你执行的块中的最后时间值值保留,但仍然是范围还是在括号内。



Answer 3:

我如何使用n的这一计划?

using namespace std;
int main()
{
     int n;      // declare n as int
     n=5;        // assign it a value
     cout << n;  // display it.
     system("pause");
     return 0;
}


Answer 4:

宣布在全球范围内的静态变量有其范围仅限于翻译单元。 声明的函数内的静态变量都有其生命周期设置为一样的程序,但在这种情况下,不影响其范围。 你将不得不把cout在相同的范围内n是为了使用它宣布。



Answer 5:

在这里,编译器会发出错误n是不宣因为在这里“{INT N; N = 5;}”, 它在括号中声明 。 和大括号告诉我们该变量的范围。 当过范围结束变量从存储器中删除

而对于静态和地方。

静态 :变量是同样喜欢全局变量,但其价值仍然是整个应用程序不变。 和静态变量不能使用的extern其他页面上使用。

本地 :本地变量存储在堆栈中,当他们离开的范围 ,他们将被删除。



文章来源: Local/static variable scope in C++