c++ 全局变量 静态全局变量

全局变量是静态存储方式, 静态全局变量也是静态存储方式,这二者在存储方式上并没有不一样。ios

区别:函数

虽在于非静态全局变量的做用域是整个源程序,当一个源程序由多个源文件组成时,静态全局变量在各个源文件中都是有效的。spa

静态局部变量则限制了其做用域, 只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。因为静态局部变量的做用域局限于一个源文件内,只能为该源文件内的函数公用,所以能够避免在其它源文件中引发错误。.net

 

///a.h
#ifndef A_H_INCLUDE
#define A_H_INCLUDE

extern int a;
int b;

#endif // a_h_include

 

///a.cpp
int a = 10;

///main.cpp
#include <iostream>
#include "a.h"
using namespace std;

 

///main.cpp
#include <iostream>
#include "a.h"
using namespace std;

int main()
{
    cout << a;
    return 0;
}

编译成功,输出 10 code

 

在a.cpp中,用static修饰a

编译没法经过

 undefined reference to `a'  -----> 未定义对“ a”的引用blog

 

能够看出被static修饰的全局变量,的做用域只在源文件的范围作用域

而非静态全局变量,则能够整个源程序文件中使用get

 推荐一篇博客:https://blog.csdn.net/qq_22238021/article/details/79533711?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1博客

写的很好io

相关文章
相关标签/搜索