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

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

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

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

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

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

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