本節書摘來自異步社群出版社《visual c++ 開發從入門到精通》一書中的第2章,第2.2節,作者: 王東華 , 李櫻,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。
知識點講解:CD光牒視訊ppt講解(知識點)第2章分析c++的程式結構.mp4
程式結構即程式的組織結構,它包括語句結構、文法規則和表達式,其内容包含代碼組織結構和檔案組織結構。在c++開發中,我們必須嚴格遵循這些規則,才能編寫出高效、易懂的程式。
先看如下代碼。
在上述代碼中,将整段程式被劃分為如下3個部分。
1.注釋部分
注釋部分即上述代碼中的首行,用雙斜杠标注。
`//這是一個示範程式,它從指令行讀入一個整數,然後加1再輸出
注釋部分即對目前程式的解釋說明,通常會說明此檔案的作用和版權等資訊。`
2.預處理部分
預處理部分即上述代碼中的第二行。
<code>#include <iostream.h></code>
預處理是指在編譯前需要提前處理的工作。例如,此段代碼表示編譯器在預處理時,将檔案iostream.h中的代碼嵌入該代碼訓示的地方,此處的#include是編譯指令。在檔案iostream.h中聲明了程式需要的輸入/輸出操作資訊。
3.主程式部分
主程式部分即剩餘的代碼。
此部分是整個程式的核心,用于實作此程式的功能。c++的每個可執行程式都有且隻有一個main函數,它是程式的入口。執行c++程式後,首先會執行這個函數,然後從該函數内調用其他需要的操作。下面依次分析上述代碼的主要功能。
第1行“int x;”。表示定義一個對象,并命名為x,後面的分号表示此條代碼到此結束。
第2行“cout<<"請輸入一個數字:";”。表示通過cout輸出一行文字。此處的cout是c++中預定義的系統對象,當程式要向輸出裝置輸出内容時,需要在程式中引用此對象,輸出操作符用“<<”表示,表示将“<<”右邊的内容輸出到“<<”左邊的對象上。例如,此行代碼表示在标準輸出裝置上輸出字元串文字“請輸入一個數字:”。
第3行“cin>>x;”。cin代表标準輸入裝置的對象,即c++中的預定義對象。當程式需要從輸入裝置接受輸入時,就需要在程式中使用該對象。輸入的操作符是“>>”,表示将“>>”左邊接受的輸入放到右邊的對象中。當程式執行到該代碼時,會停止并等待來自标準輸入裝置的輸入。輸入完畢後按enter鍵,cin會接收輸入并将輸入放到對應的對象中,然後跳到下一條代碼開始執行。
第4行“x=x+1;”。“+”當然是表示加法運算,将“+”兩邊的數字相加;“=”表示指派,将“=”右邊的運算結果放到“=”左邊的對象中去。
第5行“cout<<"x=x+1="<第6行“return 0;”。表示跳出目前程式,即傳回作業系統,使用數字0作為傳回值。
圖像說明文字
注意:很多編譯器并不特别要求函數main必須有傳回值,如visual c++,但為了養成好的習慣,建議必須加入傳回值。
2.2.2 c++的檔案組織
簡單的c++檔案結構如圖2-2所示。

圖2-2 簡單的c++檔案結構
在如圖2-2所示的結構中,隻有檔案first.cpp包含了目前項目中的程式代碼。但是在日常應用中,往往一個項目的程式代碼會比較複雜,例如,經常需要編寫幾個類和一些過程函數。為了文檔的規整有序和程式的排錯,需要為文檔設定比較合理的安排方法。
(1)每個類的聲明寫在一個頭檔案中,根據編譯器的要求可以加.h字尾名,也可以不加。這個頭檔案一般以類的名字命名。而且為了防止編譯器多次包含同一個頭檔案,頭檔案總是以下面的架構組織。
在classname_h_中,classname就是在這個檔案中聲明的類名。
(2)将類的實作放在另一個檔案中,取名為 classname.cpp(classname在類聲明檔案中聲明的類名)。并且在該檔案中的第一行包含類聲明的頭檔案,如#include"classname"(c++新标準不支援帶.h的頭檔案)。然後在此檔案中編寫類的實作代碼,一般格式如下。
<code>#include"classname"</code>
(3)與類相似,在編寫函數時,總是把函數的聲明和一些常數的聲明放在一個頭件中,然後把函數的具體實作放在另一個頭檔案中。
(4)通常來說,如果在某個源檔案中需要引入的頭檔案很多,或者為了源程式的簡潔,可以将頭檔案的引入功能寫在另一個頭檔案中,然後在源程式的第一行引入這個頭檔案即可。
(5)在檔案中需要使用函數和類時,隻需引入類和函數聲明的頭檔案即可,無需包含實作的檔案。
經過上述方法處理後,就會合理地為一個項目規劃好整體的檔案結構。在現實項目中,一個大型項目通常會包含很多.cpp檔案和函數檔案,如圖2-3所示的結構。
圖2-3 複雜的c++檔案結構