- C++語言程序設計
- 千鋒教育高教產品研發部編著
- 1247字
- 2019-07-30 17:37:41
1.2 第一個C++程序
一個程序是由若干個程序源文件組成的。為了與其他語言相區分,每一個C++程序源文件都是以.cpp為擴展名的,它由編譯預處理指令、數據或數據結構定義以及若干個函數組成。接下來以例1-1的程序代碼來分析C++的基本程序結構。
例1-1

運行結果如圖1.2所示。

圖1.2 例1-1運行結果
例1-1就是一個完整的C++程序,接下來針對該程序中的部分結構做詳細講解,如圖1.3所示。

圖1.3 例1-1程序分析
1. iostream頭文件
第1行代碼是C++文件包含#include的編譯指令,稱為預處理指令。#include后面的iostream是C++編譯器自帶的文件,稱為C++庫文件,它定義了標準輸入輸出流的相關數據及操作。由于庫文件總是被放置在源程序文件的起始處,所以這些文件被稱為頭文件。在舊的標準C++中,使用的是iostream.h,現在C++標準明確提出不支持擴展名為.h的頭文件。實際上iostream和iostream.h是不同的文件,在編譯器include文件夾里它們的內容是不同的。
在例1-1第5行代碼處使用了iostream頭文件中的cout對象來輸出一行信息。此處要注意cout的用法,它的后面要跟一個插入運算符“?”,“?”后面的所有內容都會被輸出在屏幕上。如果要輸出字符串,務必要使用雙引號將其引起來,這里輸出“Hello world!”。在該條語句的結尾處,使用了一個換行符號“endl”,該符號與“\n”的區別是“endl”除了具備“\n”的換行功能外,還可以刷新緩沖區,讓數據直接寫入文件或顯示在屏幕上。
2. 命名空間
using是編譯指令,namespace是定義命名空間的關鍵字。由于iostream頭文件是C++標準組件庫,它所定義的類、函數和變量均放入命名空間std中,因此例1-1在程序文件的開始位置處指定“using namespace std;”以便能被后面的程序所使用。事實上,cout就是std中已定義的流對象,若不使用“using namespace std;”,還可以使用以下兩種方式。

顯然,使用“using namespace std;”這種方式最為簡便,但最好的方式不是用“using namespace std;”,而是用“using std::cout;”。為方便起見,本書中使用“using namespace std;”這種方式。
3. main函數
例1-1中,main表示主函數。由于每一個程序執行時都必須從main函數開始,而不管該函數在整個程序中的具體位置,因此每一個C++程序或由多個源文件組成的C++項目都有且僅有一個main函數。
在main函數代碼中,“int main()”稱為函數的函數頭。函數頭下面是用一對大括號“{}”括起來的部分,稱為main函數的函數體。函數體中包括若干條語句,每一條語句都是以分號結束。由于main函數名的前面有int,它表示main函數的返回類型是整型,因此需要在函數體中使用關鍵字return來將其后面的值作為函數的返回值。由于return語句運行后,函數體return后面的語句不再被執行,因此除非需要函數提前結束,否則return語句應寫在函數體的最后。
4. 注釋
注釋是對程序的代碼的解釋。假如不對程序進行注釋,當代碼量非常大時,很可能理不清編寫思路。C++的注釋有兩種類型:雙斜杠型和斜杠星型。
雙斜杠型注釋(也稱C++型注釋)使用方法比較簡單,如例1-1中的第5行。但如果還想注釋下一行,則必須在開頭再次寫“//”,即這種注釋只能注釋一行語句。
斜杠星型注釋(也稱C型注釋)用“/??/”表示,其中“/?”告訴編譯器忽略后面所有內容,直到發現“?/”為止,即“/?”與“?/”必須成對出現。這種形式比較煩瑣,但是它可以注釋多行語句。
- Oracle從入門到精通(第3版)
- 小程序實戰視頻課:微信小程序開發全案精講
- Python網絡爬蟲從入門到實踐(第2版)
- DevOps Automation Cookbook
- 編程數學
- ANSYS Fluent 二次開發指南
- Java系統化項目開發教程
- Go語言底層原理剖析
- Learning VMware vSphere
- Oracle Data Guard 11gR2 Administration Beginner's Guide
- Software Development on the SAP HANA Platform
- Applied Deep Learning with Python
- Hands-On ROS for Robotics Programming
- 基于JavaScript的WebGIS開發
- Neo4j High Performance