#
2.1.5 我的一生是這樣度過的:C++程序的執(zhí)行過程
進(jìn)入_tmain()函數(shù)之前的事情我做不了主,但是進(jìn)入_tmain函數(shù)后,就是我的地盤了。我會按照你在源代碼中給我制定的人生規(guī)劃,一條語句一條語句地往下執(zhí)行,一步一步地往下走。你一定還記得,我的源代碼是這樣的:
int _tmain(int argc, _TCHAR* argv[])
{
// 在屏幕上顯示“Hello World!”
cout<<"Hello World!"<<endl;
return 0;
}
_tmain()函數(shù)有兩個參數(shù)argc和argv,你可以通過這兩個參數(shù),給_tmain()函數(shù)傳遞一些信息,給我一些額外的吩咐,比如通過這兩個參數(shù)告訴我應(yīng)當(dāng)在屏幕上顯示什么內(nèi)容等等。在這里,暫時沒有使用這兩個參數(shù)。
進(jìn)入_tmain()函數(shù)后,我遇到的第一個語句就是:
cout<<"Hello World!"<<endl;
這條語句讓我在DOS窗口中顯示“Hello World!”這樣一個字符串,于是我開始控制DOS窗口,在其中顯示這個字符串,完成了你交給我的任務(wù)。
接下來的一個語句是:
return 0;
這條簡短的語句宣告了我人生歷程的結(jié)束。它表示整個_tmain()函數(shù)的結(jié)束。圖2-7是我短暫而光輝的一生!

圖2-7 HelloWorld短暫而輝煌的一生
更多來自
http://imcc.blogbus.com
我的父親母親:編譯器和鏈接器
雖然我是Visual Studio創(chuàng)建的,但是實際上,我的老爸和老媽是Visual Studio集成的編譯器和鏈接器。此外,Visual Studio提供的主要是編輯功能,讓你更方便地編輯我的源代碼。
我老爸編譯器的工作是將高級語言C++翻譯為低級語言(機器語言)。
我的源文件是使用C++這種高級程序設(shè)計語言編寫的,便于人們編寫、閱讀和維護(hù)。但計算機不理解高級語言,所以老爸的職責(zé)是將源程序翻譯成計算機能夠解讀運行的目標(biāo)語言(target language)。目標(biāo)語言通常是匯編語言或目標(biāo)機器的目標(biāo)代碼(object code),有時也稱作機器代碼(machine code)。通過老爸的工作,計算機能看懂C++程序,就可以按照源文件中的指令執(zhí)行相應(yīng)的動作。
老爸完成我的編譯工作后,我還只是一些目標(biāo)文件,還需要老媽鏈接器將一個或多個由老爸編譯生成的目標(biāo)文件和庫函數(shù)鏈接成可執(zhí)行文件,這樣才誕生了一個可執(zhí)行的C++程序。再來回顧一下我的誕生過程(如圖2-6所示):

圖2-6 我的父親母親
炎炎夏日,為大家奉獻(xiàn)兩套精美的C++壁紙,希望能夠給你帶去一絲清涼
夏日清涼版:
C++也山寨啊
全部壁紙下載
我的五官和四肢:C++程序=預(yù)編譯指令+程序代碼+注釋
來自
《我的第一本C++書》麻雀雖小,五臟俱全。大家別看我個頭小,只有短短的幾行代碼,實現(xiàn)的功能也很簡單,但是我同樣擁有健全C++程序的五官和四肢:預(yù)編譯指令、程序代碼和注釋,如圖2-5所示。大多數(shù)情況下,這三個基本部分都被放在一個擴展名為“cpp”的文本文件中,這個文件被稱為C++ 源文件。源文件記錄了我的五官和四肢、規(guī)劃了我的人生。而你作為源文件的編寫者,就是我的設(shè)計師了。通過修改源文件,你可以改變我的面貌、我的人生軌跡,讓我完成各種任務(wù)。

圖2-5 C++程序=預(yù)編譯指令+程序代碼+注釋
會說話,就會編程:C++是如此簡單的編程語言
C++是一門程序設(shè)計語言,有著語言的基本特征,我們可以像學(xué)習(xí)普通語言一樣來學(xué)習(xí)C++。
語言,是用來描述和表達(dá)現(xiàn)實世界的,編程語言也不例外。為了描述現(xiàn)實世界的事物,我們需要一些名詞,在C++中就是數(shù)據(jù)類型和用數(shù)據(jù)類型表達(dá)的數(shù)據(jù)。而為了表達(dá)事物之間的關(guān)系,將各個事物連綴成句子,在C++中就是表達(dá)式。將多個句子通過一定的邏輯關(guān)系組合起來,就可以形成一篇文章,同樣的,在C++中通過一定的邏輯控制將多個表達(dá)式組合起來,就形成了程序。通過C++編程語言和自然語言的對比,我們可以輕松地理解C++程序的含義。C++是描述現(xiàn)實世界的編程語言,編寫程序的過程,是將自然語言翻譯成程序語言的過程,如此而已。
比如,在自然語言中,我們可以這樣來描述一件事情:
有個男孩叫小張,有個女孩叫小芳。男孩向女孩示愛。女孩對男孩進(jìn)行考察,如果男孩有房又有車,則與之交往;如果沒有,則與之拜拜。翻譯過程可以參考圖1-4。

圖1-4 編程就是把自然語言翻譯成C++語言
C++語言的發(fā)展過程,不僅是一個特性不斷增加,內(nèi)容不斷豐富的過程,更是一個在應(yīng)用領(lǐng)域不斷攻城略地的過程。在其40余年的發(fā)展過程中,C++在多個應(yīng)用領(lǐng)域都得到了廣泛的應(yīng)用和發(fā)展。無論是在最初的UNIX操作系統(tǒng)上,在Windows操作系統(tǒng)上,還是在最近興起的嵌入式系統(tǒng)上,C++都占有一席之地(如圖1-3所示)。

圖1-3 C++世界三分天下
1.2.6 五岳劍派:C++世界的五大子語言
C++已經(jīng)有40多年的發(fā)展歷史了,在發(fā)展過程中,因為不同的應(yīng)用領(lǐng)域,不同的開發(fā)思想而形成了不同的C++子語言。每個子語言各有所長,就像C++世界的五岳劍派,各自在自己的領(lǐng)域獨領(lǐng)風(fēng)騷,形成C++世界百花齊放的繁盛局面(如圖1-2所示)。

圖1-2 C++的五種子語言爭奇斗艷
摘要: 導(dǎo)讀:
看圖也能學(xué)C++?!
沒錯,看圖也能學(xué)C++!
這本迷你書是《我的第一本C++書》的迷你版,它抽取了《我的第一本C++書》中的全部的精美插圖,并配上相應(yīng)的解釋說明。它以圖文并茂的生動形式,向你講解那些所謂的高深的C++知識,讓你對那些抽象的C++知識有一個更加形象的理解,向你展示這個美麗而神秘的C++世界,讓你在有趣的看圖過程中,輕松地學(xué)到了C++知識。
閱讀全文
摘要: 《我的第一本C++書》:
STL運用到了極致,發(fā)揮出了它簡潔優(yōu)雅的特點,這才是讓考官滿意的滿分答案。同時,這道題也告訴我們這樣一個道理:代碼,就像女人的裙子,越短越好。
——介紹STL算法
所以,這是一本非一般的C++書。
閱讀全文
摘要: 一位朋友評價這是“一部C++語法大全”,這個評價太夸張了,擔(dān)當(dāng)不起啊 實際上,我對于C++語法的態(tài)度,有點像對英語語法的態(tài)度,我們學(xué)習(xí)英語,聰明的人不會去背一本英語語法書(但是有些不太聰明的人,卻去背了),老外們小時候恐怕也沒有學(xué)過什么英語語法吧,但是這并不妨礙他們說一口流利的英語。學(xué)習(xí)英語講求語感,C++作為一門程序設(shè)計語言,說到底,它的本質(zhì)還是語言,同樣講求語感,所以,這本書可能給你講解的不是某些具體的語法,而是通過一些生動有趣的小例子,講解C++的應(yīng)用,就像我們第一堂英語課學(xué)習(xí)的“Good Morning”一樣,以這樣的形式來培養(yǎng)大家的C++語感。 有了C++語感,你就仿佛找到了打開C++大門的鑰匙。想入門還是出門,那就隨心所欲了
閱讀全文