目錄6.1.2 函式的宣告
6.1.3 分離式編譯
變數型別
作用域生命期
初始化全域性物件
整個程式
整個程式
預設初始化
自動物件
塊作用域
宣告時自動建立,出作用域後自動銷毀
預設初始化
區域性靜態物件
塊作用域
整個程式
值初始化
//舉例: 用區域性靜態變數統計某函式的呼叫次數
#includeusing namespace std;
int cout_calls()
int main()//輸出:0、1、2、......、10
在工程專案中,函式宣告最好包含在標頭檔案中
看起來把函式的宣告直接放在使用該函式的原始檔中是合法的,也比較容易被人接受;但是這麼做可能會很煩瑣而且容易出錯。相反,如果把函式宣告放在標頭檔案中,就能確保同一函式的所有宣告保持一致。而且一旦我們想改變函式的介面,只需改變一條宣告即可。分離式概念隨著程式越來越複雜,我們希望把程式的各個部分分別儲存在不同檔案中。為了允許編寫程式時按照邏輯關係將其劃分開來,c++語言支援所謂的分離式編譯(separate compilation)。分離式編譯允許我們把程式分割到幾個檔案中去,每個檔案獨立編譯。
./a.exe
:執行a.exe
舉個例子,假設fact函式的定義位於乙個名為fact.cpp的檔案中,它的宣告位於名為fact.h的標頭檔案中。顯然與其他所有用到fact函式的檔案一樣,fact.cpp應該包含fact.h標頭檔案。另外,我們在名為factmain.cpp的檔案中建立main函式,main函式將呼叫fact函式。要生成可執行檔案(executable file),必須告訴編譯器我們用到的**在**。生成可執行檔案a.exe
g++ fact.o factmain.o
執行a.exe
./a.exe
第6章 6 1 函式基礎
6.1.2 函式宣告 乙個典型的函式定義包括以下幾個部分 返回型別 函式名字 由0個或多個形參組成的列表以及函式體。其中,形參以逗號隔開,形參列表位於一對圓括號之內。函式的呼叫完成兩項工作 1 用實參初始化函式對應的形參 2 將控制權轉移給被調函式。此時主調函式的執行被中斷,被調函式開始執行。舉個例...
第六章 函式 6 1 函式基礎
函式是乙個命名了的 塊,我們通過呼叫函式執行相應的 函式可以有 0 個或多個引數,而且 通常 會產生乙個結果。可以過載函式 同乙個名字可以對應幾個不同的函式 乙個典型的函式 function 定義包括以下幾個部分 編寫函式 val 的階乘是 val val 1 val 2 val val 1 1 i...
基礎61 稀疏矩陣
61 稀疏矩陣 問題描述 今天明明學到了什麼叫做矩陣,但他發現要將乙個矩陣輸入進電腦是一件很麻煩的事。特別是有些矩陣很大,且大部分元素都是0,我們稱這類矩陣為稀疏矩陣。於是,明明發明了一種簡單的表示方法,只指出矩陣中非零元素來表示該矩陣。例如乙個矩陣 0 0 0 5 2 0 0 0 0 1 0 0 ...