C++靜態全域性變數和全域性變數的區別
靜態全域性變數 | 非靜態全域性變數 | |
儲存方式 | 靜態儲存 | 靜態儲存 |
作用域 | 定義該變數的原始檔內 | 所有原始檔 |
解釋:
共同點:全域性變數(外部變數)的說明之前再冠以static 就構 成了靜態的全域性變數。全域性變數本身就是靜態儲存方式, 靜態全域性變數當然也是靜態儲存方式。 這兩者在儲存方式上並無不同。
不同點:這兩者的區別雖在於非靜態全域性 變數的作用域是整個源程式, 當一個源程式由多個原始檔組成時,非靜態的全域性變數在各個原始檔中都是有效的。 而靜態全域性變數則限制了其作用域, 即只在 定義該變數的原始檔內有效, 在同一源程式的其它原始檔中不能使用它。由於靜態全域性變數的作用域侷限於一個原始檔內,只能為該原始檔內的函式公用, 因此 可以避免在其它原始檔中引起錯誤。從以上分析可以看出, 把區域性變數改變為靜態變數後是改變了它的儲存方式即改變了它的生存期。把全域性變數改變為靜態變數 後是改變了它的作用域, 限制了它的使用範圍。因此static 這個說明符在不同的地方所起的作用是不同的。
相關推薦
C++靜態全域性變數和全域性變數的區別
靜態全域性變數 非靜態全域性變數 儲存方式 靜態儲存 靜態儲存 作用域 定義該變數的原始檔內 所有原始檔 解釋: 共同點:
C/C++ 全域性變數和區域性變數在記憶體裡的區別?堆和棧
一、預備知識—程式的記憶體分配 一個由c/C++編譯的程式佔用的記憶體分為以下幾個部分 1、棧區(stack)— 由編譯器自動分配釋放 ,存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧,如果還不清楚,那麼就把它想成陣列,它的記憶體分
C/C++關於全域性變數和區域性變數初始化與不初始化的區別
在C語言裡,全域性變數如果不初始化的話,預設為0,也就是說在全域性空間裡:int x =0; 跟 int x; 的效果看起來是一樣的。但其實這裡面的差別很大,強烈建議大家所有的全域性變數都要初始化,他們的主要差別如下: 編譯器在編譯的時候針對這兩種情況會產生兩種符號
全域性變數,區域性變數,靜態變數和例項變數的區別
全域性變數是一個執行時刻實體,他在程式的整個執行過程都存在。全域性變數佔用的儲存時刻的使命週期從程式的開始到結束,全域性變數初始化時或者未初始化時,在程式映像中有不同的分割槽,已初始化的n全域性變數是可執行的一部分。未初始化的全域性變數是不可初始化的一部分,只
全域性變數和區域性變數的區別
全域性變數【成員變數、欄位】 作用域直接宣告在類當中的變數,作用於整個類當中,整個類中都可以被訪問到 修飾符 可以被static final 修飾詞修飾 這裡被final修飾的表示的是最終的不可變得 這裡被static修飾的是靜態成員變數。其隨著位元組碼檔案建立
C語言中區域性變數和全域性變數變數的儲存類別(static,extern,auto,register)
C語言中區域性變數和全域性變數變數的儲存類別(static,extern,auto,register) 1----區域性變數和全域性變數 在討論函式的形參變數時曾經提到,形參變數只在被呼叫期間才分配記憶體單元,呼叫結束立即釋放。這一點表明形參變數只有在函式內才是有效的,離開該函式就不能再使用了。
c語言全域性變數和區域性變數問題彙總(轉)
1、區域性變數能否和全域性變數重名? 答:能,區域性會遮蔽全域性。要用全域性變數,需要使用"::" 區域性變數可以與全域性變數同名,在函式內引用這個變數時,會用到同名的區域性變數,而不會用到全域性變數。對於有些編譯器而言,在同一個函式內可以定義多個同名的區域性變數,比如在兩
jmeter多執行緒併發時,區域性變數和全域性變數的區別
1. 業務場景5個使用者登入系統,需要將登入介面A返回的token作為介面B的入參。介面B設定集合點,同時請求後臺介面。2. 指令碼2.1 目錄結構 2.2 多個使用者資訊獲取 採用csv檔案儲存使用者資訊
C語言中的靜態變數和普通變數的區別
下面用程式碼說明: 一個可執行程式包括BSS段、資料段、程式碼段(文字段)。 bss segment ,data segment ,code/text segment ①BSS(Block by Start Symbol) :通常指用來存放程式中未初化的全域性變數和靜態變數
C語言 全域性變數和區域性變數的大小限制(關於堆疊的劃定)
下午做最長公共子序列的時候遇到的問題,問了felix後恍然大悟...看程式碼 #include <stdio.h> int main(){ int a[1000000];//區域性變數 return 0; } 編譯執行後發現溢位錯誤。 #include <
C/C++全域性變數和區域性變數作用域問題
這是一個作用域的問題。一個宣告將一個名字引進一個作用域;區域性變數(通常在函式中定義)的作用域是從宣告的那一點開始,直到這個宣告所在的塊結束為止(一個塊就是由{}圍起來的一段程式碼)。全域性變數(在所有函式、類、名稱空間之外定義)的作用域從宣告的那一點開始,直到這個宣
C語言全域性變數和區域性變數總結
————————————————————————————————————————————————————————————————————————————— 只有不斷的學習,不斷的進步,才能不被替代! 只有你的不可替代性才決定你的價值! -----2016年11月18
51微控制器C語言程式設計雜談基礎----全域性變數和區域性變數
< 部落格宗旨:文章短,時間短,不考驗耐力 > 我記著我在開始編寫51微控制器程式的時候,老是在思考一個問題:怎麼把一個函式中的值傳到另一個函式中去呢???讓我痛不堪言。雖然簡單,但是在那個時候我還是不知道的。 全域性變數:就是在整個工程都可以使用
C語言中區域性變數和全域性變數解釋
區域性變數 : 在一個函式內部定義的變數是區域性變數,它只在本函式範圍內有效,也就是說只有在本函式內才能使 用它,在此函式外是不能使用這些變數的。這些稱為區域性變數。 說明 (1) 不同函式中可以使用相同名字的變數,它們代表不同的變數,互不干擾。
c語言全域性變數和區域性變數
全域性變數: (1)在函式外定義 (2)在全域性可見 (3)一般在程式頂部定義 (4)存放在記憶體的全域性資料區 (5)如在定義時未初始化,則其值為0 (6)如果一個函式修改了全域性變數,則所有其他的函式都會看到修改後的變數 區域性變數: (1)
全域性變數和區域性變數有沒有區別,如果有,是什麼?
一、變數的分類 變數可以分為:全域性變數、靜態全域性變數、靜態區域性變數和靜態變數。 按儲存區域分,全域性變數、靜態全域性變數、靜態區域性變數都存放在記憶體的靜態儲存區域,區域性變數存放在記憶體的棧區。 按作用域分,全域性變數在整個
【轉載】c語言全域性變數和區域性變數問題彙總
1、關鍵字static的作用是什麼?定義靜態變數 2、static有什麼用途?網上答案: 1).限制變數的作用域(在程式的整個執行期間都不釋放) 2).設定變數的儲存域(儲存在靜態儲存區內) 譚浩強C語言page180: (1)對區域性變數用static宣告,則為該變數分
Python3 全域性變數和區域性變數的使用
name='lhf' def change_name(): print('我的名字',name) change_name() def change_name(): name='帥了一筆' print('我的名字',name) change_name() print(name) d
JS 變數和函式提升 全域性變數和區域性變數
1. var a = 10; function test() { a = 100; console.log(a); console.log(this.a); var a; console.log(a); } test();//100 10 100 =&
Python千萬要注意的全域性變數和區域性變數問題
1、直接在函式中呼叫全域性變數 m = 100 def fun(): print("m1:",m) fun() print("m2:", m) 輸出: 2、函式體內呼叫與全域性變數同名的區域性變數 m = 100 def fun(): m = 50