C++系列教程現在在自己學校的一個博客平台發布,幾個朋友一起搭建的
[C++基礎教程系列](https://blog.ytmaxoj.org/cpp_basic_liuary-0/)
下面是原來的正文
大家好啊,一年一度的檸檬節——額,好像不止一度的檸檬節,它又到了!在這個悲傷的日子,我決定開啟一個C++的教程,主要是為了復習自己的C++知識,另外順便給新手們一個了解C++的方向。
本教程主要面向C++初學者,如果你先前學過C語言或者Java,學起來將會比較輕松一點。
C++是C語言的繼承,它既可以進行C語言的過程化程序設計,又可以進行以抽象數據類型為特點的基於對象的程序設計,還可以進行以繼承和多態為特點的面向對象的程序設計。
在我真正接觸編程之前,我向往的一直是Java,因為當時喜歡玩Minecraft,而Minecraft的mod開發需要用到Java,然而在我認識了C++以后,我再也不想碰Java了。
C++的好處和壞處此處也不科普,自行百度。
廢話少說,正片開始。
一、創建一個C++項目
雖然我不是很喜歡MS的VS,但不得不說這玩意確實很好用。另外Visual Studio的顏值確實高,雖然我更喜歡Vs code,但是VS code用GNU GCC編譯的C++程序中文亂碼太煩了,所以還是直接用了VS2019進行C++的開發。
第一步,打開Visual Studio,單擊創建新項目。
第二步,選擇空項目並點擊下一步。
第三步,為項目起個名字、設定位置並且點擊下一步。
這樣我們就生成了一個空項目。
第四步,在解決方案資源管理器中的 項目名>>源文件 文件夾上右鍵 添加>>新建項 。
第五步,在 添加新項窗口中左側點擊Visual C++,選擇中央的 C++文件,起個名字然后點擊添加。
二、HelloWorld!我是一只檸檬鯨
第一步,在代碼區輸入以下內容:
1 #include <iostream> // 包含標准輸入輸出流的庫 2 3 int main(int argc, char* argv[]) // 標准MAIN函數開場 4 { 5 std::cout << "HelloWorld!" << std::endl; // 單個字符串輸出並換行 6 std::cout << "我是一只"; // 單個字符串輸出並不換行 7 std::cout << "檸檬" << "鯨" << std::endl; // 多個字符串輸出並換行 8 return 0; 9 }
第二步,選擇Debug X86 ,並且點擊本地Windows調試器。
第三步,控制台窗口彈出,顯示輸出結果。
PS:如果出現編譯問題,先檢查代碼是否正確,然后仔細對照我前面的操作,看看是否有出入。
三、代碼分析
第一行:
1 #include <iostream>
include是一個計算機專業術語,一指C/C++中包含頭文件命令,用於將指定頭文件嵌入源文件中。效果等同於將后面括號內包含的文件的全部內容在#include的位置全部寫一遍。
iostream的意思是輸入輸出流,直接點說就是in(輸入) out(輸出) stream(流),取in、out的首字母與stream合成。這個庫的作用就是讓你能夠在控制台進行輸入輸出。
第二行:
1 // 這是一個空行
第二行打個空行純屬個人愛好,因為我覺得這樣看起來更好看一些。
第三行:
1 int main(int argc, char* argv[])
首先我們要知道這個是一個函數,形式上類似數學中的函數,如:f(x) = x + 1,f(1) = 2;
int 表示返回類型是整型,整型表示某變量或常量里面的值只能是整數而不能是小數或者文本等。意思就是后面這一串代碼最終會變成一個數字。就像是上面提到的數學函數,f(1)其實最終是一個2。
main 是這個函數的名字。main是C/C++程序的入口,程序從main處開始運行。函數名的意義就類似數學中,f(x),g(x)等,函數名不同,一般其函數(表達式)也不同。
(int argc, char* argv[]) 是函數的參數列表,就類似於 f(x) 中的 x ,就是向函數傳遞的值。在C++原生代碼中,int argc, char* argv[] 不是必須的,也就是說你可以只寫一個 int main(),但是建議加上,因為學習某些庫多半要用到。
第四、九行:
1 { 2 // 函數體 3 }
我們可以看到main函數后面的內容都被一對花括號{}包裹,這對花括號包含的內容就是函數體,就像是之前的數學函數的例子, f(x) = x + 1, 其中 x + 1 就是函數體。
第五行:
1 std::cout << "HelloWorld!" << std::endl;
std 在C++語言中,std其實就是standard標准的意思。std是C++預置的一個命名空間,其中包含了許多必要的函數,比如cout、cin、string,你可以在你的代碼之前加上
1 using namespace std;
這樣就可以直接使用cout、cin等函數,而不需要std::cout、std::cin。
命名空間,也就是namespace的作用是划定一塊區域,用來定義變量等等,然后這些變量只在這片區域有效,離開這片區域必須使用預作用符,比如std::cout,這樣就有效避免因為變量名相同導致代碼沖突的問題,因此並不建議使用using namesapce,因為可能導致重復定義。
std::cout 的作用是在控制台打印輸出后面所有被<<限定的內容,直到本行結束。std::cout本身不換行,因此存在std::endl用來換行,而std::ends可以打出空格。
分號的作用是一行代碼的結束。
后面兩行的意思相差不大,因此不再贅述。
第八行:
1 return 0;
這一行的意義是函數最終返回了一個值,就像之前的f(1)最終等於2,這里返回一個0,意思是當函數結束,就返回一個0。猶豫在這個例子中,和main函數對接的是控制台,因此返回的0會在控制台出現。
如果你return設置為1,那么返回的就是1,只要你設定的返回值符合返回類型,都可以返回對應類型的值。
return是十分重要的功能,不可忽視,因為后面運用到函數,都需要返回值來進行相應操作。
C++的第一課就這樣吧,希望大家能夠學到一些知識,如有錯誤,大佬請指正,謝謝。