主頁 > 後端開發 > 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

2020-09-10 01:00:41 後端開發


眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開,您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎,

C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由于幾乎沒有任何抽象,因此您需要定義幾乎每個使代碼正常作業的屬性;這將迫使您真正了解自己在做什么以及程式將如何影響系統,

在這篇文章中,我們將帶您學習初學者的學習C ++的路線圖,這樣您就可以在開始旅程時感到自信,

這是我們今天要介紹的內容:

C ++簡史

C ++工具和軟體概述

C ++語言和語法簡介

讓我們開始吧!

通過實踐練習學習C ++

了解世界上最流行的編程語言之一,

 

C ++簡史

入門C ++的一種好方法是了解其歷史,C ++是最古老的編程語言之一,因此有許多不同的版本,對這段歷史有一定的了解,這將使您處于C ++程式員社區,并使您對其功能有所了解,

C ++編程語言是Bjarne Stroustrup于1979年在貝爾實驗室(Bell Labs)從事博士學位論文時發明的,C ++被設計為編程語言C的擴展,因此它的原始名稱為“帶有類的C”,Stroustrup的目標是為C語言增加靈活性和OOP(面向物件編程),他包括諸如類,強型別檢查,默認函式引數和基本繼承之類的功能,該名稱于1983年更改為C ++,該名稱源自++運算子,

C ++于1985年發布用于商業用途,但尚未標準化,1990年,Borland的Turbo C ++編譯器發布,其中增加了許多新功能,1998年發布了第一個C ++國際標準,稱為C ++ 98,

其中包括標準模板庫,提供了通用的編程功能和資料結構,根據反饋,委員會于2003年修訂了這些標準,并將更新語言重命名為C ++ 03,

當C ++ 11完成時,該語言在2011年進行了另一次修訂,此版本包括正則運算式支持,新庫,新的回圈語法,auto關鍵字和新的容器類等功能,從那時起,又發布了兩個修訂版本,即C ++ 14和C ++ 17,

 

C ++工具概述

為了正確制作C ++程式,您需要熟悉一些工具和軟體:文本編輯器,C ++編譯器,聯結器和庫,

文字編輯器

為了撰寫C ++程式,您需要一個文本編輯器,將此視為空白的Microsoft Word檔案;這是您實際撰寫代碼的地方,任何文本編輯器都可以使用,甚至計算機中內置了一些文本編輯器,但是我們建議使用專為編碼而設計的文本編輯器,有很多選擇,但是一些C ++開發人員最常用的文本編輯器是:

記事本++:開放式,輕便,簡單

Atom:免費,支持多種語言,有限的插件

Sublime Text:$ 80美元,獨特功能,簡單布局

Bluefish:輕巧,快速,多平臺,支持多種語言

編譯器

編譯器遍歷您的源代碼以完成兩項重要任務:首先,它檢查您的代碼是否符合C ++語言規則;其次,它將代碼轉換為目標檔案,一些著名的編譯器是GCC,Clang和Visual Studio C ++編譯器,我們不建議您使用Turbo C ++,因為它已經過時了,

連接器

編譯器完成作業后,目標檔案將發送到聯結器程式,該程式將完成三個任務:首先,它將所有目標檔案組合到一個程式中;其次,它將庫檔案鏈接到您的程式;第三,它暴露了任何跨檔案命名或參考問題,

標準庫

庫本質上是預包裝的代碼束,可以重復使用,C ++庫稱為C ++標準庫,它與幾乎每個C ++程式都鏈接,如果您有C ++標準庫未滿足的需求,也可以將其他庫添加到程式中,

集成開發環境(IDE)

許多C ++程式員使用IDE代替文本編輯器和編譯器,IDE是一站式C ++編程商店,它包括文本編輯器,聯結器,編譯器和庫,沒有正確或錯誤的編譯器,這一切都取決于您的需求以及哪種布局最適合您,一些流行的IDE是:

代碼::塊:免費的按需功能,用戶插件

Visual Studio代碼:開源,強大的功能,跨平臺

Eclipse:開源,簡單,跨平臺,需要安裝C ++組件

C ++語言和語法簡介

C ++是一種面向物件的編程語言,這意味著C ++程式圍繞物件和類建模,您可以通過應用函式來控制和操縱它們,OOP語言為程式提供了清晰的結構,并幫助開發人員對實際問題進行建模,

該語言旨在為您提供很多自由和力量,無論好壞,您可以完全控制系統如何利用資源,沒有像Java中那樣的自動記憶體管理;您可以在記憶體分配方式(即堆疊或堆)之間進行選擇;C ++中沒有解釋程式可以阻止您撰寫錯誤的代碼,

為了開始使用C ++,您需要熟悉語法,這將為其余的C ++旅程鋪平道路,并幫助您創建安全且無錯誤的優化程式,

讓我們看一些C ++代碼!

查看下面的代碼,您可能想知道所有這些是什么以及它的含義,歡迎使用C ++語法,

什么是語法?語法就像編程語言的語法一樣,它是您將用C ++撰寫的所有內容的基本基礎,這些是定義如何撰寫和理解C ++代碼的規則,讓我們看一些示例代碼,以熟悉語法,

語法說明

#include 是頭檔案庫,頭檔案將功能匯入程式,我們基本上是在要求程式從名為的檔案中復制內容,這代表輸入和輸出流,它定義了我們代碼中物件的標準,

using namespace std表示我們正在使用標準庫(std)中的物件和變數名,該陳述句通常縮寫為關鍵字std和運算子::,將int main ( )用于指定的主要功能,

這是C ++程式中非常重要的部分,函式本質上為代碼定義了一個動作,大括號內的所有內容{ }都會執行,

cout是一個物件(讀為-發音),在此示例中,它定義了我們的輸出:單詞字串,我們cout在第二行使用撰寫一個新物件,字符\n使文本在另一行執行,

包括兩個將\n\n創建一個空格,通過撰寫return 0,我們告訴程式什么都不會回傳,我們僅輸出文本字串,請注意,我們使用<<運算子來命名物件,半冒號的;功能就像一個句點,

從一個簡單的hello world程式開始,并繼續涵蓋諸如C ++中的條件陳述句,回圈和函式之類的核心概念,然后再討論諸如繼承,類和模板等更高級的主題,以及更多內容,

C ++術語和詞匯

現在我們已經了解了C ++代碼的樣子,讓我們定義一些我們提到的術語,并向您介紹更多術語,

關鍵詞

關鍵字是預先確定的名稱,可用于識別代碼中的內容,關鍵字是特定物件,變數或動作的識別符號,您也可以創建自己的關鍵字,以下是一些關鍵字示例:

goto

float

public

class(1)

int

變數

變數就像存盤值的容器,要宣告變數,必須type使用正確的關鍵字為其賦予一個值和一個,C ++中的所有變數都需要一個名稱或識別符號,制作識別符號時,需要遵循一些基本的語法規則,

(1)名稱區分大小寫

(2)名稱可以包含字母,數字和下劃線

(3)名稱必須以字母或下劃線開頭

(4)名稱不能包含空格或特殊字符(!,#,@等)

(5)名稱不能使用保留關鍵字

有六種不同型別的變數:

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

資料型別

資料型別是您可以在程式中使用的各種資料的分類,資料型別告訴我們的變數它們可以存盤什么資料,C ++中有三種資料型別:

原始資料型別:這些是可用于宣告變數的內置資料,它們包括integer,character,boolean,floating point,double floating point,void,和wide character,

派生資料型別:這些派生自原始資料型別,它們包括function,reference,array,和pointer,

用戶定義的資料型別:這些由您(程式員)定義,

字串

字串是C ++中的物件,它們是” “引號內的一組字符,例如我們的”Hello World”字串,由于它們是物件,因此我們可以對它們執行功能,例如length ( )確定字串長度的功能,

運算子

運算子是操縱我們的資料并執行操作的符號,在C ++中,我們可以多載運算子以使它們適用于程式員定義的類,多載操作員基本上意味著一個操作員一次可以具有多個功能,C ++語言中有四種運算子:

算術運算子用于數學運算,這些作業就像代數符號一樣,

賦值運算子用于為我們的變數賦值

比較運算子比較兩個值,

邏輯運算子確定值之間的邏輯

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

物件

物件是我們可以操作的資料的集合,C ++中的物件具有屬性(其特征)和方法(其能力),您使用類構造物件,可以將其視為物件的藍圖,

您使用class關鍵字創建一個類,你必須定義一個訪問說明符,如public,private或protected,該public關鍵字指出類是從該類外部訪問,一旦定義了類,就可以定義屬性和物件,下面看一看類和物件的示例,

#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;

}

功能

函式是被呼叫時運行的代碼塊,它們是程式的主力軍,用于對代碼執行操作和操縱,

它們對于代碼的可重用性非常重要,有助于更好地模塊化代碼,考慮一下您啟動的這些動作,在C ++中,有一些預定的功能,例如main ( )我們最初的示例,

要創建一個函式,必須給它起一個名字(稱為宣告)和括號( ),然后,您可以使用that隨時呼叫此函式name ( ),

有很多使用函式的方法,您還可以將回傳值附加到函式,以確定函式是否應該輸出任何資訊,該void關鍵字狀態會有不歸路,的return關鍵字,在另一方面,將要求資料型別的輸出,

條件陳述句

這些使您可以檢查是否應執行代碼塊,C ++中有四個條件陳述句:

if:如果滿足特定條件,將執行特定操作

else:如果不滿足該條件,則將執行特定操作

else if:如果不滿足第一個條件,將測驗新條件

switch:針對值串列測驗變數

回圈

回圈類似于條件陳述句,只要達到一定條件,它們就會執行代碼塊,C ++中有兩種回圈型別:

while回圈:條件回傳時,此回圈將繼續遍歷您的代碼true,

for 回圈:當您知道要回圈代碼的確切次數時使用

現在,您已經對C ++語法有了基本的了解,下面讓我們看一些常見問題解答和資源,以使您開始C ++的旅程,

恭喜!您已經了解了C ++的基礎知識!您正逐漸成為一名可聘用的C ++程式員,

自學C/C++編程難度很大,如果你想更快提升自己的編程能力和撰寫專案的水平,歡迎一起共同成長!

C語言C++編程學習交流圈子,QQ群【757874045點擊進入】微信公眾號:C語言編程學習基地

分享(原始碼、專案實戰視頻、專案筆記,基礎入門教程)

歡迎轉行和學習編程的伙伴,利用更多的資料學習成長比自己琢磨更快哦!



轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/256.html

標籤:C++

上一篇:C/C++編程筆記:關于C++的參考型別,專供新手入門使用

下一篇:對C++的一些常見問題的解答丨都2020年了,C++還有必要認真學嗎?

標籤雲
其他(123570) Java(13369) Python(12729) C(7542) 區塊鏈(7372) JavaScript(7048) 基礎類(6313) AI(6244) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4120) MySQL(4012) Linux(3394) C語言(3288) C++語言(3117) Java相關(2746) 疑難問題(2699) 單片機工控(2479) Web開發(1951) 網絡通信(1793) 數據庫相關(1767) VB基礎類(1755) PHP(1727) 開發(1646) 系統維護與使用區(1617) .NETCore(1586) 基礎和管理(1579) JavaEE(1566) C++(1527) 專題技術討論區(1515) Windows客戶端使用(1484) HtmlCss(1466) ASP.NET(1428) Unity3D(1354) VCL組件開發及應用(1353) HTML(CSS)(1220) 其他技術討論專區(1200) WindowsServer(1192) .NET技术(1165) 交換及路由技術(1149) 語言基礎算法系統設計(1133) WindowsSDKAPI(1124) 界面(1088) JavaSE(1075) Qt(1074) VBA(1048) 新手樂園(1016) 其他開發語言(947) Go(907) HTML5(901) 新技術前沿(898) 硬件設計(872) 區塊鏈技術(860) 網絡編程(857) 非技術版(846) 一般軟件使用(839) 網絡協議與配置(835) Eclipse(790) Spark(750) 下載資源懸賞專區(743)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • 在C#中,如何為Praxedo業務事件附件管理器創建SOAP集成?

    我們使用 Praxedo,需要將其與我們的其他解決方案集成。他們的 API 需要使用 SOAP,而且還需要 MTOM 和基本身份驗證。我們已經成功地與多種服務集成,例如他們的客戶經理。在客戶...

    uj5u.com 2021-10-16 15:47:18 more
  • Weblogic14c-webservice-description-name在weblogic-webservice

    我使用以下注釋將我的無狀態 ejb 公開為 Web 服務:@WebService( name = "MyServicePort", portName = "MyServicePort", serviceName = "MyService",)@SOAPBinding(...

    uj5u.com 2021-10-16 15:45:15 more
  • 如何在docker環境中安裝yarn?

    現在,我正在嘗試在 docker 上為 Ruby on rails 創建環境。我閱讀了一些人撰寫并嘗試過的檔案和一些博客。但是我遇到了錯誤并且無法完成。好像我必須在docker環境中安裝yarn,...

    uj5u.com 2021-10-16 15:40:43 more
  • 如何查詢按日期過濾的活動記錄?

    如何從我的資料庫中選擇僅在 5 月份處于活動狀態的所有學生學生?我在活動記錄檔案中找不到它。我只設法查詢了 5 月份創建的學生,而不是所有學生都激活了....Student.where(st...

    uj5u.com 2021-10-16 15:39:52 more
  • 選擇一個Gradle任務,以便每次運行測驗

    當我第一次運行測驗(方法)時,我有這個選單
    但是如果我從當前選單再次運行這個測驗(第二次或更多次),它將運行我最近運行的任務。所以我需要幫助,如何配置IntelliJ Idea,使IDEA總是...

    uj5u.com 2021-10-16 15:29:58 more
  • cypress上的invoke()方法如果呼叫兩次就不作業了

    我是Cypress的新手,我想用一個已經存在的網頁來實作一些簡單的測驗。我對結果有點困惑,因為我呼叫了兩次invoke():第一次是檢查初始值(0%),第二次是設定一個新的值并檢查變化,但是...

    uj5u.com 2021-10-16 15:28:48 more
  • 用jest和testing-library測驗組件內的一個函式

    我是testing-library和jest的新手,我想測驗組件內部的一個函式,它能改變一個輸入的值。這個組件是一個表單,它的另一個組件是一個輸入。
    export const Form=() => {
    const [n...

    uj5u.com 2021-10-16 15:28:44 more
  • TypeScript通用型將所有的特定型別改為另一種型別

    我試圖想出一種型別,即接受一個物件并將所有型別為number的鍵設定為string。 下面的方法不起作用:...

    uj5u.com 2021-10-16 12:36:47 more
  • 當庫存數量為0時,Recyclerview專案顯示空位

    當我從回應中得到庫存數量為0時,產品不顯示,但產品位置在網格回收器視圖kotlin中顯示空位。我將整個串列傳入配接器,然后通過庫存數量過濾。
    class ProductListAdapter(
    va...

    uj5u.com 2021-10-16 12:36:15 more
  • Android-從另一個片段內的回收器視圖呼叫片段

    我有一個應用程式(Java),原來有5個部分。所有這些都是片段,它們由底部導航中的5個圖示訪問。然而,其中一個部分(Lessons)現在被一個不同的片段所取代,該片段包含一個回收器視圖。在...

    uj5u.com 2021-10-16 12:35:50 more