c++ 全局變量 靜態全局變量


全局變量是靜態存儲方式, 靜態全局變量也是靜態存儲方式,這兩者在存儲方式上並無不同。

區別:

雖在於非靜態全局變量的作用域是整個源程序,當一個源程序由多個源文件組成時,靜態全局變量在各個源文件中都是有效的。

靜態局部變量則限制了其作用域, 只在定義該變量的源文件內有效,在同一源程序的其它源文件中不能使用它。由於靜態局部變量的作用域局限於一個源文件內,只能為該源文件內的函數公用,因此可以避免在其它源文件中引起錯誤。

 

///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 

 

在a.cpp中,用static修飾a

編譯無法通過

 undefined reference to `a'  -----> 未定義對“ a”的引用

 

可以看出被static修飾的全局變量,的作用域只在源文件的范圍

而非靜態全局變量,則可以整個源程序文件中使用

 推薦一篇博客: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

寫的很好


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM