天天看點

《C++入門經典(第5版•修訂版)》——2.2 程式的組成部分

本節書摘來自異步社群出版社《c++入門經典(第5版•修訂版)》一書中的第2章,第2.2節,作者:【美】jesse liberty , rogers cadenhead,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

c++入門經典(第5版•修訂版)

您在第1章建立的程式motto.cpp包含c++程式的基本架構。程式清單2.1再次列出了該程式的源代碼,以便詳細探索。

在編輯器中輸入該程式時,記住不要包含其中的編号,提供它們旨在友善引用代碼行。

程式清單2.1 motto.cpp的完整源代碼

《C++入門經典(第5版•修訂版)》——2.2 程式的組成部分

這個程式生成一行輸出,奧爾胡斯大學的校訓:

<code>solidum petit in profundis!</code>

在程式清單2.1中,第一行包含了一個名為iostream的檔案,導緻編譯器認為在這個地方輸入的是檔案iostream的全部内容。

c++編譯器執行的第一項操作是,調用另一個被稱為預處理器的工具對源代碼進行檢查,這是在編譯器每次運作時自動進行的。

在第1行,第一個字元是符号#,它指出這行是一個将由預處理器處理的指令。這些指令稱為預處理器編譯指令。預處理器的職責是,閱讀代碼,查找編譯指令并根據編譯指令相應地修改代碼。修改後的代碼将提供給編譯器。

預處理器相當于編譯前的代碼編輯,每條編譯指令都是一個指令,告訴這位編輯如何做。

編譯指令#include告訴預處理器,将指定檔案的全部内容加入到程式的指定位置。c++提供了一個标準源代碼庫,您可在程式中使用它們來執行有用的功能。檔案iostream中的代碼支援輸入輸出任務,如在螢幕上顯示資訊以及從使用者那裡接受輸入。

檔案名iostream前後的&lt;&gt;告訴預處理器,前往一組标準位置尋找該檔案。由于這些尖括号,預處理器将前往為編譯器存儲頭檔案的目錄中查找檔案iostream。這些檔案也被稱為包含檔案,因為它們被包含在源代碼中。

在第1行,将插入檔案iostream的全部内容。

注意:

傳統上,頭檔案的擴充名為.h,也被稱為h檔案,是以使用的編譯指令類似于include 。

較新的編譯器不要求指定擴充名,但是,如果引用了使用擴充名的檔案,編輯指令出于相容性考慮仍然會奏效。本書在包含檔案時,省略不必要的.h。

在第5行,指令cout使用了檔案iostream的内容,該指令在螢幕上顯示資訊。

在上述源代碼中,沒有其他的編譯指令,是以motto.cpp的其他代碼由編譯器處理。

實際的程式從第3行開始,它聲明了一個名為main()的函數。函數是執行一個或多個相關操作的代碼塊,它執行某些操作後傳回到調用它的位置。

每個c++程式都包含一個main()函數,程式運作時将自動調用main()。

在c++中,所有函數都必須在完成任務後傳回一個值。函數main()總是傳回一個整數,這是使用關鍵字int指定的。

與c++程式中的其他代碼塊一樣,函數也包含在{和}内。所有函數都以左大括号{開頭,并以右大括号}結尾。

在程式motto.cpp中,函數main()的大括号位于第4行和第7行。大括号内的所有代碼都是函數的組成部分。

在第5行,使用指令cout在螢幕上顯示了一條消息。在該對象前面,使用了std::對其進行限定,告訴編譯器使用标準c++輸入輸出庫。就現在而言,有關這方面的工作原理太複雜,如果在這裡介紹,很可能導緻您将本書丢得老遠。為他人的安全着想,這些内容将在本書後面介紹。就現在而言,将std::cout視為在程式中用于處理輸出的對象的名稱,而将std::cin視為用于處理使用者輸入的對象即可。

在第5行,std::cout後面是&lt;&lt;,它被稱為輸出重定向運算符。運算符是代碼行中根據某種資訊執行操作的字元。運算符&lt;&lt;顯示它後面的資訊(僅限目前行)。在第5行,文本“solidum petit in profundis!n”用雙引号括起了。這将在螢幕上顯示一個字元串,末尾的特殊字元n表示換行符,導緻接下來的程式輸出從下一行開始。

在第6行,程式傳回整數0。程式運作完畢後,作業系統将收到這個值。通常,程式傳回0表示它運作成功,而其他數字表示出現了某種故障。

第7行的右大括号表示函數main()到此結束,而程式也到此結束。所有程式的基本架構都與這裡示範的相同。

繼續閱讀