我們定義全域性變數,如果不賦值,編譯器給他賦上0.如果定義了值,就在編譯的時候就確定下來了,這個值是編譯器根據我們的語句賦給它的.而不程式中指令賦給它的!
所以一定要注意,全域性變數和靜態變數的初始化時間實際上是在程式的編譯過程中確定的,而不是在程式執行過程。
但在c和c++中靜態區域性變數的初始化節點又有點不太一樣。在c中,初始化發生在**執行之前,編譯階段分配好記憶體之後,就會進行初始化,所以我們看到在c語言中無法使用變數對靜態區域性變數進行初始化,在程式執行結束,變數所處的全域性記憶體會被全部**。而在c++中,初始化時在執行相關**時才會進行初始化,主要是由於c++引入物件後,要進行初始化必須執行相應建構函式和析構函式,在建構函式或析構函式中經常會需要進行某些程式中需要進行的特定操作,並非簡單地分配記憶體。所以c++標準定為全域性或靜態物件是有首次用到時才會進行構造,並通過atexit()來管理。在程式結束,按照構造順序反方向進行逐個析構。所以在c++中是可以使用變數對靜態區域性變數進行初始化的。
#include
#include
using
namespace std;
intmain()
談談c 中的模版
c 中的模版給我的印象有以下幾個 1,函式模版和普通函式相比多了乙個宣告它是模板的模板頭,它在宣告和定義時不指定形參的型別,到被呼叫時才根據傳遞進來的實參型別確定形參型別。這樣就滿足了定義乙個函式可以進行多種資料型別的運算效果。函式模版和普通模版的用法是一樣的,它可以被呼叫,可以被過載等。2,類模版...
談談C 中的單例
寫c 的時候用到單例,於是很自然的寫出如下的 namespace tlanyan other members public static foo getinstance return instance foo other members and codes foo foo instance null...
關於C 中變數的別名的問題
實參 argument 全稱為 實際引數 是在呼叫時傳遞給函式的引數.實參可以是常量 變數 表示式 函式等,無論實參是何種型別的量,在進行函式呼叫時,它們都必須具有確定的值,以便把這些值傳送給形參。因此應預先用賦值,輸入等辦法使實參獲得確定值。形參 parameter 全稱為 形式引數 由於它不是實...