在c++中,變數的作用域可以分為全域性作用域,區域性作用域;全域性作用域又可分為檔案作用域、整個程式作用域。
1. 全域性作用域
處於全域性作用域的變數有,一般全域性變數、static全域性變數、static區域性變數,這些變數存放在全域性/靜態資料區域中。
在沒有標頭檔案的情況下,
(1)static全域性變數只能在定義它的檔案中使用,不能跨cpp檔案使用。
(2)一般全域性變數如果需要在整個程式中使用,那麼在定義它的cpp檔案中,加上extern欄位,例如:extern double test = 9;在需要訪問它的cpp檔案中,宣告的時候加上extern欄位,例如:extern double test;。
在有標頭檔案的情況下,
(1)如果在a.cpp中include了b.h,並且在b.h中定義了static全域性變數,在使用過程中,會發現,這個static全域性變數在a中的變化絲毫不影響它在b中的值,反之亦然。
(2)如果在a.cpp中inluce了b.h,並且在b.h中定義了全域性變數,將發生編譯錯誤。
如果是在dll中的全域性變數,並在dll中修改了全域性變數,想在程式中使用的方法是:
在dll中這樣宣告:
_declspec(dllexport) int share_int = 5;
extern "c"
_declspec(dllexport) int do_some_thing()
return share_int;
extern "c"在客戶端中這樣使用:_declspec(dllexport) int change_share_int(int val)
int temp=share_int;
share_int = val;
return temp;
const tchar* dll_debug_path=_t("a.dll");
#pragma comment(lib, "../debug/a.lib")
_declspec(dllimport) int share_int;
int _tmain(int argc, _tchare* argv)
hinstance hdlla = loadlibrary(dll_debug_path);typedef int(*dosomethingfunc)( );
typedef int(*changeshareintfunc)(int);
dosomethingfunc p_do_some_thing = (dosomethingfunc)getprocaddress(hdlla,"do_some_thing");
changeshareintfunc p_change_share_int =(changeshareintfunc)getprocaddress(hdlla, ("change_share_int"));
if(p_do_some_thing||!p_change_share_int)
return 1;
p_do_some_thing();
int old_share_int = p_change_share_int(20);
2. 區域性作用域
語句作用域:在乙個語句塊中定義,在這個語句塊中可用。
函式作用域:在函式內定義,在整個函式中可用。
類作用域: 如果兩個類的成員一模一樣,也是2個型別。成員在整個類中,有效。
區域性變數的初始化:內建型別,使用前必須顯示初始化,如果是全域性變數,會預設自動初始化為0。
類型別,如果成員是內建型別,不會自動初始化;成員為型別,會自動初始化。如果是類型別全域性變數,所有的成員都會自動初始化。
區域性變數存在於棧中。
new 的變數存在於堆中,malloc的變數存在於自由區中,常量存在於常量區中。
3.關於using
當想使用乙個命名空間中的型別時,有2種方式:
(1) using namespace std; 可以使用std中的所有型別
(2) using namespace::型別;只能使用宣告的這個型別
C 基礎作業 3 變數的作用域
3.變數的作用域 前言 這個主是講明在c 中變數的作用域 就是說你申明乙個變數,那麼這個變數在哪些地方是可以使用,而哪個地些你使用不了 這個跟你申明變數時有著很大的關係 下面是我寫的一段 using system using system.collections.generic using syst...
JavaScript 基礎筆記 3作用域
作用域 在一定的範圍內進行讀寫操作 域 空間,範圍,區域 script裡面 全域性變數 全域性函式 自上而下 函式 由里到外 區域性可以改全域性的值 作用 讀,寫 作用域鏈 函式內找不到宣告順著作用域鏈往上找 瀏覽器 js解析器 1 找一些東西 var function 引數.var a 未定義 所...
作用域(基礎篇)
一 作用域關鍵字 public 公共的 public表明該資料成員 成員函式是對所有使用者開放的,所有的使用者都可以直接進行呼叫。protected 受保護的 protected 對於子女 朋友來說,就死public的,可以自用使用,沒有任何限制,而對於其他的外部class,protected就變成...