關鍵解決點是使用extern,還有就是理解c++宣告、定義、賦值。
宣告是告訴程式,這個地方有個變數,定義是為變數開闢空間,賦值是開闢空間後給值
例如下面這個a.cpp程式:
#include "myhead.h"
#include int main()
我明明沒有定義a,為什麼沒有報錯呢?原因在於我引入了我自定義的標頭檔案#include "myhead.h",下面是標頭檔案中內容:
extern int a;
我們知道include作用只是**搬運作用,即include作用是把myhead.**件內**複製到a.cpp。那麼其實兩個檔案可以合併為:
#include extern int a;
int main()
上面**與平時**還是有些區別就是多了乙個extern,extern int a;其實就是宣告,並沒有定義,a真正在哪定義呢?可能是在另乙個thrid.c檔案中,thrid.cpp檔案內容可能是:
int a;
到此為止a就是乙個全域性變數。為何是全域性變數呢,例如a.c檔案它直接引入乙個#include "myhead.h"就直接用變數a的值了,假如再建立乙個.cpp檔案,此時再#include "myhead.h"那麼也可以直接使用變數a了,這樣就實現了全域性功能
在a.cpp使用變數a時候可以為a賦值,這樣就能更改a值了,如果a宣告時候是乙個const常量,那麼a只可以使用,不可以改變
下面再看看如果是乙個類,如何把這個類的乙個例項作為全域性的例項:
以類舉例:
第一步,建立乙個檔案用於放類的定義(此定義不是那種開闢空間的定義),檔名為student.h
#include class student
};
第二步,建立乙個檔案用於定義這個類例項student.cpp
#include "student.h"
student stu;
第三步,之前那個myhead.h標頭檔案中加入stu的宣告
#include "student.h"
extern int a;
extern student stu;
最後任意乙個檔案的只要引入myhead.h標頭檔案即可直接用stu,如在a.cpp檔案中
#include "myhead.h"
#include int main()
c 多個原始檔共用乙個全域性變數(e
例子 標頭檔案 state.h 原始檔 state.cpp 其它原始檔 t1.cpp t2.cpp t3.cpp,這些原始檔都包含標頭檔案state.h。需要定義乙個全域性變數供這些原始檔中使用 方法如下 1 在 state.h宣告全域性變數 extern int a 2 在state.cpp中定義...
c 多個檔案中共用乙個全域性變數 變數跨檔案使用
雖然很多部落格都寫過這個了 但是 我還是繼續補充的詳細一點吧 畢竟很多人新手的程式是我們寫部落格的人難以想象不是嗎 想要跨檔案使用 肯定是要用到 extern宣告變數了 不懂自己查 舉個例子 標頭檔案 source.h 原始檔 source.cpp 其它原始檔 t1.cpp t2.cpp t3.cp...
使用乙個全域性變數
然而,有區域性變數同名的全域性變數通常是製造麻煩,並應盡可能避免。使用匈牙利表示法,它是常見的全域性變數 g 字首。這是區分全域性變數與區域性變數的一種簡單的方式,避免了由於被隱藏變數命名衝突。新的程式設計師經常使用全域性變數很多,因為他們是容易的工作,特別是當涉及到許多功能。然而,這是乙個非常糟糕...