【C/C++編程筆記】從頭開始學(xué)習(xí)C ++:初學(xué)者完整指南

眾所周知,C ++的學(xué)習(xí)曲線陡峭,但是花時(shí)間學(xué)習(xí)這種語言將為您的職業(yè)帶來奇跡,并使您與其他開發(fā)人員區(qū)分開。您會(huì)更輕松地學(xué)習(xí)新語言,形成真正的解決問題的技能,并在編程的基礎(chǔ)上打下堅(jiān)實(shí)的基礎(chǔ)。
C ++將幫助您養(yǎng)成良好的編程習(xí)慣(即清晰一致的編碼風(fēng)格,在編寫代碼時(shí)注釋代碼,并限制類內(nèi)部的可見性),并且由于幾乎沒有任何抽象,因此您需要定義幾乎每個(gè)使代碼正常工作的屬性;這將迫使您真正了解自己在做什么以及程序?qū)⑷绾斡绊懴到y(tǒng)。
在這篇文章中,我們將帶您學(xué)習(xí)初學(xué)者的學(xué)習(xí)C ++的路線圖,這樣您就可以在開始旅程時(shí)感到自信。
這是我們今天要介紹的內(nèi)容:
C ++簡史
C ++工具和軟件概述
C ++語言和語法簡介
讓我們開始吧!
通過實(shí)踐練習(xí)學(xué)習(xí)C ++
了解世界上最流行的編程語言之一。
C ++簡史
入門C ++的一種好方法是了解其歷史。C ++是最古老的編程語言之一,因此有許多不同的版本。對這段歷史有一定的了解,這將使您處于C ++程序員社區(qū),并使您對其功能有所了解。
C ++編程語言是Bjarne Stroustrup于1979年在貝爾實(shí)驗(yàn)室(Bell Labs)從事博士學(xué)位論文時(shí)發(fā)明的。C ++被設(shè)計(jì)為編程語言C的擴(kuò)展,因此它的原始名稱為“帶有類的C”。Stroustrup的目標(biāo)是為C語言增加靈活性和OOP(面向?qū)ο缶幊蹋?。他包括諸如類,強(qiáng)類型檢查,默認(rèn)函數(shù)參數(shù)和基本繼承之類的功能。該名稱于1983年更改為C ++,該名稱源自++運(yùn)算符。

C ++于1985年發(fā)布用于商業(yè)用途,但尚未標(biāo)準(zhǔn)化。1990年,Borland的Turbo C ++編譯器發(fā)布,其中增加了許多新功能。1998年發(fā)布了第一個(gè)C ++國際標(biāo)準(zhǔn),稱為C ++ 98。
其中包括標(biāo)準(zhǔn)模板庫,提供了通用的編程功能和數(shù)據(jù)結(jié)構(gòu)。根據(jù)反饋,委員會(huì)于2003年修訂了這些標(biāo)準(zhǔn),并將更新語言重命名為C ++ 03。
當(dāng)C ++ 11完成時(shí),該語言在2011年進(jìn)行了另一次修訂。此版本包括正則表達(dá)式支持,新庫,新的循環(huán)語法,auto關(guān)鍵字和新的容器類等功能。從那時(shí)起,又發(fā)布了兩個(gè)修訂版本,即C ++ 14和C ++ 17。
C ++工具概述
為了正確制作C ++程序,您需要熟悉一些工具和軟件:文本編輯器,C ++編譯器,鏈接器和庫。
文字編輯器
為了編寫C ++程序,您需要一個(gè)文本編輯器。將此視為空白的Microsoft Word文檔;這是您實(shí)際編寫代碼的地方。任何文本編輯器都可以使用,甚至計(jì)算機(jī)中內(nèi)置了一些文本編輯器,但是我們建議使用專為編碼而設(shè)計(jì)的文本編輯器。有很多選擇,但是一些C ++開發(fā)人員最常用的文本編輯器是:
記事本++:開放式,輕便,簡單
Atom:免費(fèi),支持多種語言,有限的插件
Sublime Text:$ 80美元,獨(dú)特功能,簡單布局
Bluefish:輕巧,快速,多平臺(tái),支持多種語言


編譯器
編譯器遍歷您的源代碼以完成兩項(xiàng)重要任務(wù):首先,它檢查您的代碼是否符合C ++語言規(guī)則;其次,它將代碼轉(zhuǎn)換為目標(biāo)文件。一些著名的編譯器是GCC,Clang和Visual Studio C ++編譯器。我們不建議您使用Turbo C ++,因?yàn)樗呀?jīng)過時(shí)了。
連接器
編譯器完成工作后,目標(biāo)文件將發(fā)送到鏈接器程序,該程序?qū)⑼瓿扇齻€(gè)任務(wù):首先,它將所有目標(biāo)文件組合到一個(gè)程序中;其次,它將庫文件鏈接到您的程序;第三,它暴露了任何跨文件命名或參考問題。
標(biāo)準(zhǔn)庫
庫本質(zhì)上是預(yù)包裝的代碼束,可以重復(fù)使用。C ++庫稱為C ++標(biāo)準(zhǔn)庫,它與幾乎每個(gè)C ++程序都鏈接。如果您有C ++標(biāo)準(zhǔn)庫未滿足的需求,也可以將其他庫添加到程序中。
集成開發(fā)環(huán)境(IDE)
許多C ++程序員使用IDE代替文本編輯器和編譯器。IDE是一站式C ++編程商店。它包括文本編輯器,鏈接器,編譯器和庫。沒有正確或錯(cuò)誤的編譯器。這一切都取決于您的需求以及哪種布局最適合您。一些流行的IDE是:
代碼::塊:免費(fèi)的按需功能,用戶插件
Visual Studio代碼:開源,強(qiáng)大的功能,跨平臺(tái)
Eclipse:開源,簡單,跨平臺(tái),需要安裝C ++組件

C ++語言和語法簡介
C ++是一種面向?qū)ο蟮木幊陶Z言。這意味著C ++程序圍繞對象和類建模,您可以通過應(yīng)用函數(shù)來控制和操縱它們。OOP語言為程序提供了清晰的結(jié)構(gòu),并幫助開發(fā)人員對實(shí)際問題進(jìn)行建模。
該語言旨在為您提供很多自由和力量,無論好壞。您可以完全控制系統(tǒng)如何利用資源。沒有像Java中那樣的自動(dòng)內(nèi)存管理;您可以在內(nèi)存分配方式(即堆?;蚨眩┲g進(jìn)行選擇;C ++中沒有解釋程序可以阻止您編寫錯(cuò)誤的代碼。
為了開始使用C ++,您需要熟悉語法。這將為其余的C ++旅程鋪平道路,并幫助您創(chuàng)建安全且無錯(cuò)誤的優(yōu)化程序。
讓我們看一些C ++代碼!
查看下面的代碼,您可能想知道所有這些是什么以及它的含義。歡迎使用C ++語法。
什么是語法?語法就像編程語言的語法一樣。它是您將用C ++編寫的所有內(nèi)容的基本基礎(chǔ)。這些是定義如何編寫和理解C ++代碼的規(guī)則。讓我們看一些示例代碼,以熟悉語法。

語法說明
#include?是頭文件庫。頭文件將功能導(dǎo)入程序。我們基本上是在要求程序從名為的文件中復(fù)制內(nèi)容。這代表輸入和輸出流,它定義了我們代碼中對象的標(biāo)準(zhǔn)。
using namespace std表示我們正在使用標(biāo)準(zhǔn)庫(std)中的對象和變量名。該語句通常縮寫為關(guān)鍵字std和運(yùn)算符::。將int main ( )用于指定的主要功能。
這是C ++程序中非常重要的部分。函數(shù)本質(zhì)上為代碼定義了一個(gè)動(dòng)作。大括號(hào)內(nèi)的所有內(nèi)容{ }都會(huì)執(zhí)行。
cout是一個(gè)對象(讀為-發(fā)音)。在此示例中,它定義了我們的輸出:單詞字符串。我們cout在第二行使用編寫一個(gè)新對象。字符\n使文本在另一行執(zhí)行。
包括兩個(gè)將\n\n創(chuàng)建一個(gè)空格。通過編寫return 0,我們告訴程序什么都不會(huì)返回。我們僅輸出文本字符串。請注意,我們使用<<運(yùn)算符來命名對象。半冒號(hào)的;功能就像一個(gè)句點(diǎn)。
從一個(gè)簡單的hello world程序開始,并繼續(xù)涵蓋諸如C ++中的條件語句,循環(huán)和函數(shù)之類的核心概念,然后再討論諸如繼承,類和模板等更高級(jí)的主題,以及更多內(nèi)容。

C ++術(shù)語和詞匯
現(xiàn)在我們已經(jīng)了解了C ++代碼的樣子,讓我們定義一些我們提到的術(shù)語,并向您介紹更多術(shù)語。
關(guān)鍵詞
關(guān)鍵字是預(yù)先確定的名稱,可用于識(shí)別代碼中的內(nèi)容。關(guān)鍵字是特定對象,變量或動(dòng)作的標(biāo)識(shí)符。您也可以創(chuàng)建自己的關(guān)鍵字。以下是一些關(guān)鍵字示例:
goto
float
public
class(1)
int
變數(shù)
變量就像存儲(chǔ)值的容器。要聲明變量,必須type使用正確的關(guān)鍵字為其賦予一個(gè)值和一個(gè)。C ++中的所有變量都需要一個(gè)名稱或標(biāo)識(shí)符。制作標(biāo)識(shí)符時(shí),需要遵循一些基本的語法規(guī)則。
(1)名稱區(qū)分大小寫
(2)名稱可以包含字母,數(shù)字和下劃線
(3)名稱必須以字母或下劃線開頭
(4)名稱不能包含空格或特殊字符(!,#,@等)
(5)名稱不能使用保留關(guān)鍵字
有六種不同類型的變量:
int?myNum?=?5;???????????????//?Stores?integers?(whole?numbers)
float?myFloatNum?=?5.99;?????//?Stores?decimals?loating?point?number
double?myDoubleNum?=?9.98;???//?Floating?point?number
char?myLetter?=?'D';?????????//?Stores?single?characters
bool?myBoolean?=?true;???????//?Stores?Boolean,?values?with?a?true?or?false?state
string?myText?=?"Hello";?????//?Stores?strings?of?text
數(shù)據(jù)類型
數(shù)據(jù)類型是您可以在程序中使用的各種數(shù)據(jù)的分類。數(shù)據(jù)類型告訴我們的變量它們可以存儲(chǔ)什么數(shù)據(jù)。C ++中有三種數(shù)據(jù)類型:
原始數(shù)據(jù)類型:這些是可用于聲明變量的內(nèi)置數(shù)據(jù)。它們包括integer,character,boolean,floating point,double floating point,void,和wide character。
派生數(shù)據(jù)類型:這些派生自原始數(shù)據(jù)類型。它們包括function,reference,array,和pointer。
用戶定義的數(shù)據(jù)類型:這些由您(程序員)定義。
字符串
字符串是C ++中的對象。它們是” “引號(hào)內(nèi)的一組字符,例如我們的”Hello World”字符串。由于它們是對象,因此我們可以對它們執(zhí)行功能,例如length ( )確定字符串長度的功能。
運(yùn)算符
運(yùn)算符是操縱我們的數(shù)據(jù)并執(zhí)行操作的符號(hào)。在C ++中,我們可以重載運(yùn)算符以使它們適用于程序員定義的類。重載操作員基本上意味著一個(gè)操作員一次可以具有多個(gè)功能。C ++語言中有四種運(yùn)算符:
算術(shù)運(yùn)算符用于數(shù)學(xué)運(yùn)算。這些工作就像代數(shù)符號(hào)一樣。
賦值運(yùn)算符用于為我們的變量賦值
比較運(yùn)算符比較兩個(gè)值。
邏輯運(yùn)算符確定值之間的邏輯
cout?<<?x?+?y?//?This?adds?x?to?y
int?x?=?10?//?This?defines?x?as?10
x?<=?y?//?Determines?x?is?greater?than?or?equal?to?y
x?<?4?&&?x?<9?//?Will?return?true?if?both?statements?are?true?about?x
對象
對象是我們可以操作的數(shù)據(jù)的集合。C ++中的對象具有屬性(其特征)和方法(其能力)。您使用類構(gòu)造對象。可以將其視為對象的藍(lán)圖。
您使用class關(guān)鍵字創(chuàng)建一個(gè)類。你必須定義一個(gè)訪問說明符,如public,private或protected。該public關(guān)鍵字指出類是從該類外部訪問。一旦定義了類,就可以定義屬性和對象。下面看一看類和對象的示例。
#include <iostream>
using namespace std;
class Dog //this is the name of our class
{
public:
? ? string name = "rover"; //this is an attribute
? ? string gender? = "male";
? ? int age = 5;
};
int main() {
? Dog dogObj;? ? //here we are making an object of Dog class
? cout << "Dog name is: "<<dogObj.name<<endl;? ? //by using . operator we can access the member of class
? cout << "Dog gender is: "<<dogObj.gender<<endl;? ? //accessing the public members of class Dog in main()
? cout << "Dog age is: "<<dogObj.age<<endl;
}
功能
函數(shù)是被調(diào)用時(shí)運(yùn)行的代碼塊。它們是程序的主力軍,用于對代碼執(zhí)行操作和操縱。
它們對于代碼的可重用性非常重要,有助于更好地模塊化代碼??紤]一下您啟動(dòng)的這些動(dòng)作。在C ++中,有一些預(yù)定的功能,例如main ( )我們最初的示例。
要?jiǎng)?chuàng)建一個(gè)函數(shù),必須給它起一個(gè)名字(稱為聲明)和括號(hào)( )。然后,您可以使用that隨時(shí)調(diào)用此函數(shù)name ( )。
有很多使用函數(shù)的方法。您還可以將返回值附加到函數(shù),以確定函數(shù)是否應(yīng)該輸出任何信息。該void關(guān)鍵字狀態(tài)會(huì)有不歸路。的return關(guān)鍵字,在另一方面,將要求數(shù)據(jù)類型的輸出。

條件語句
這些使您可以檢查是否應(yīng)執(zhí)行代碼塊。C ++中有四個(gè)條件語句:
if:如果滿足特定條件,將執(zhí)行特定操作
else:如果不滿足該條件,則將執(zhí)行特定操作
else if:如果不滿足第一個(gè)條件,將測試新條件
switch:針對值列表測試變量
循環(huán)
循環(huán)類似于條件語句。只要達(dá)到一定條件,它們就會(huì)執(zhí)行代碼塊。C ++中有兩種循環(huán)類型:
while循環(huán):條件返回時(shí),此循環(huán)將繼續(xù)遍歷您的代碼true。
for?循環(huán):當(dāng)您知道要循環(huán)代碼的確切次數(shù)時(shí)使用
現(xiàn)在,您已經(jīng)對C ++語法有了基本的了解,下面讓我們看一些常見問題解答和資源,以使您開始C ++的旅程。
恭喜!您已經(jīng)了解了C ++的基礎(chǔ)知識(shí)!您正逐漸成為一名可聘用的C ++程序員。
自學(xué)C/C++編程難度很大,如果你想更快提升自己的編程能力和編寫項(xiàng)目的水平,歡迎一起共同成長!
分享(源碼、項(xiàng)目實(shí)戰(zhàn)視頻、項(xiàng)目筆記,基礎(chǔ)入門教程)
歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長比自己琢磨更快哦!

UP在主頁上傳了一些學(xué)習(xí)C/C++編程的視頻教程,有興趣或者正在學(xué)習(xí)的小伙伴一定要去看一看哦!會(huì)對你有幫助的~
