今天開始寫下一系列C和C++從入門開始的文章。
簡單說幾句C和C++的關系。C語言早於C++。
C語言
貝爾實驗室的Ken Thompson發明了 UNIX,當時有個B語言的。后來D.M.Ritchie加入到這個項目,主要目的就是改進B語言,於是乎C語言誕生了(K&R)。現在很多計算機底層的東西都是C語言實現的。
C++語言
同樣來自貝爾實驗室的 Bjarne Stroustrup 發明了C++語言,期初只是在C語言的基礎上加了面向對象的東西,后來才加上模板,STL等特性。
值得一提的是,貝爾實驗室的最初的 cfront 編譯器 (第一款C++編譯器),是將C++語言翻譯成C語言來實現的。
這些歷史,權當做八卦來看就行,對新手學習C和C++,我建議大家先從C語言學起,熟悉指針,內存操作等之后,再學C++,最后再看C++11以后的新特性。
好了,言歸正傳,學習C語言,首先需要有一個能寫程序的工具,需要能夠編譯,運行的工具。如果想了解細節,還需要工具能夠調試。
我們先說一下工具。
編譯器: 我主要在 Linux 和 windows 平台做開發,所以會用這兩個操作系統做編譯環境。
編輯器:很多人推薦vim ,鑒於windows平台用戶眾多,新手對 vim 操作不太順暢,所以建議使用VS Code, 一個跨平台的開源編輯器。
先說說 windows 環境,在windows上入門,用visual studio 就行。(Visual Studio C++ 的架構師可是 cfront1.0版本的主力作者李普曼,C++Primer的作者)。qt確實跨平台做的好,UI也比較簡單,我還是建議用VS做入門。后邊用到UI的時候我們再說QT。
我的windows VM 版本是2012,Visual Studio 的版本是2015. 微軟提供簡單的安裝步驟,直接按照提示安裝就行。注意,VS2015在選中安裝模塊時,C++不在默認范圍內,所以需要選中C++模塊才行。
安裝完之后,打開 VS,選擇文件,新建項目,語言選擇C++,如果能正常出來下邊的窗口,說明C++模塊安裝正常

我的Linux VM 版本是Red Hat 7.7 版本,gcc 版本是4.8.5. RH 安裝gcc 時直接在命令行輸入 yum install gcc. 這時候會自動下載安裝 gcc。剛剛這個命令只會安裝 gcc,不會安裝 g++,所以如果在后邊我們學習進入C++階段時,g++是必須的,所以需要把g++ 也安裝上,輸入yum install gcc-c++ 即可安裝g++ 。安裝完后,輸入 gcc -v 和 g++ -v 能看到安裝的版本。如圖:

好了,接下來,我們要在這兩個平台上實現鼎鼎大名的 Hello World 了。
程序非常簡單。
1 #include <stdio.h> 2 int main() 3 { 4 printf("Hello World!\n"); 5 }
第一行,引入頭文件,該頭文件中包含程序需要的庫函數的函數聲明。
第二行,程序入口,可執行程序的程序入口是 main 函數(可以有參數,因為這里不涉及,所以只定義了main函數)
第四行,程序主體,printf,標准輸出,函數聲明在 stdio.h 文件中能找到,所以需要在第一行引入頭文件。輸出末尾是 "\n", 標准換行符,程序語句以 ";"結束。
第三行和第五行,用 {} 將程序封裝到一個程序塊中(block),C和C++程序的函數都是以 {} 封裝。這兩行封裝了main 函數的主體。
windows環境的Visual Studio集成了編譯,運行,調試。切記擴展名會影響編譯結果,我們使用擴展名為 .c, 而不是VS默認的.cpp. 這樣會以C語言來編譯。
Linux 下,需要自己寫命令來編譯。假設我們的源文件叫 main.c, gcc main.c, 默認輸出可執行文件 a.out. 我們可以指定輸出文件。 gcc main.c -o main, 輸出文件為 main.
當我們運行編譯出來的結果時,會在控制台輸出 Hello World! 並換行。
好了,第一講先說這么些,后邊會慢慢進階C和C++。
