主頁 > 後端開發 > 【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++還有必要認真學嗎?

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【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
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more