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

相關文章
相關標籤/搜索