官术网_书友最值得收藏!

icon2

1.1 第一個C++程序

剛開始接觸一門編程語言,一般會從寫一個輸出Hello world的程序開始。

【例1.1】 用程序輸出Hello world。


#include<iostream>
using namespace std;
int main()
{
     cout<<"Hello world."<<endl;
     return 0;
}

把上述程序編寫在一個叫helloworld.cpp的文件中,并將它放到Linux機器上的某個目錄下,執行g++helloworld.cpp命令,會在該目錄下生成a.out文件。執行./a.out命令,即可得到輸出結果:Hello world.。

先看程序的第一行(#include<iostream>),這不是一個C++語句,是一個預處理語句,編譯器的預處理器把輸入輸出流的標準頭文件包括在本程序中,所以不需要在句末加分號(;)。include一個文件,就是把這個文件的所有內容都加進來。圖1-1展示了包含文件的過程。

圖1-1 include文件的原理

如圖1-1所示,include一個.h文件,就是等于把整個.h文件給復制到程序中,include一個.cpp文件也是如此。

除了#include<>的方式來包含一個頭文件,還會見到#include""的方式來包含一個頭文件。而#include<>與#include""的區別是:#include<>常用來包含系統提供的頭文件,編譯器會到保存系統標準頭文件的位置查找頭文件;而#include""常用于包括程序員自己編號的頭文件,用這種格式時,編譯器先查找當前目錄是否有指定名稱的頭文件,然后從標準頭目錄中進行查找。

還經常會看到#include<iostream>和#include<iostream.h>的使用。事實上,#include<iostream>和#include<iostream.h>是不一樣的,因為iostream和iostream.h是兩個不同的文件,前者沒有后綴。實際上,在你的編譯器include文件夾里面可以看到,兩個文件打開后,里面的代碼是不一樣的。后綴為.h的頭文件在C++標準已經明確提出不再支持了,早些的C語言為了實現將標準庫功能定義在全局空間里,聲明放在在帶.h后綴的頭文件里。C++標準為了和C語言區別開,也為了正確使用命名空間,規定頭文件不再使用后綴.h。因此,當使用<iostream.h>時,相當于在C中調用庫函數,使用的是全局命名空間,也就是早期的C++實現方法。換句話說,iostream是iostream.h的升級版,大部分的頭文件都有一個不帶.h擴展名的文件與之相對應。不過有個特例,<string>并非<string.h>的升級版。

再看程序的第二行:“using namespace std;”中使用了命名空間std。命名空間是為了讓大量類名共存而不至于引起沖突而設計的。C++標準函數庫的所有元素都被聲明在一個命名空間中,這就是std命名空間。為了能夠訪問它的功能,使用這條語句來表達將使用標準名空間中定義的元素。這條語句在使用標準函數庫的C++程序中頻繁出現,本書中大部分例子的代碼中也將用到它,需要注意的是,最好不要在頭文件中使用命名空間,否則容易造成命名沖突。

繼續看程序的第三行:“int main()”,這是主函數(main function)的起始聲明。主函數是所有C++程序的運行的起始點。不管它是在代碼的開頭、結尾還是中間,此函數中的代碼總是在程序開始運行時第一個被執行。main后面跟了一對圓括號(),表示它是一個函數。C++中所有函數都跟有一對圓括號(),括號中可以有一些輸入參數。如例1.1中顯示,主函數(main function)的內容緊跟在它的聲明之后,由花括號{}括起來。

程序的第四行:“cout<<"Hello world."<<endl;”是本程序中最重要。cout是C++中的標準輸出流(通常為控制臺,即屏幕),這句話把一串字符串(本例中為Hello World)插入到輸出流中。cout在的聲明在頭文件iostream中,所以要想使用cout必須將該頭文件包括在程序開始處。注意這個句子以分號結尾。分號標示了一個語句的結束,C++的每一個語句都必須以分號結尾。C++程序員最常犯的錯誤之一就是忘記在語句末尾寫上分號。

最后一行(return 0;)中返回語句(return)標志主函數main()執行結束,并將該語句后面所跟代碼(在本例中為0)返回。這是在程序執行沒有出現任何錯誤的情況下最常見的程序結束方式。在后面的例子中會看到所有C++程序都以類似的語句結束。

主站蜘蛛池模板: 高雄市| 桐柏县| 调兵山市| 肥西县| 大冶市| 那曲县| 文水县| 肥乡县| 普兰店市| 新民市| 无为县| 封开县| 镇远县| 蒲城县| 明星| 上蔡县| 马鞍山市| 科技| 综艺| 高台县| 宝鸡市| 凭祥市| 武宣县| 扬州市| 朝阳区| 栾城县| 个旧市| 华宁县| 阜南县| 新晃| 嵊泗县| 天祝| 湖南省| 陈巴尔虎旗| 浮山县| 寻乌县| 伊宁县| 邢台县| 海安县| 安陆市| 南开区|