C++語言學習筆記1

2022-01-31 AlbertLiDesign

聲明:

       本系列是我從csdn上學習c++語言基礎記錄的筆記,是跟著賀利堅老師所學,這位老師在教學上有獨特的見解,而且人非常耐心,他的課程也非常適合我這種跨專業程式語言學習者。

        本系列將記錄C++語言學習的點點滴滴,內容中會有部分賀老師的課件截圖,現已獲得賀老師授權,發出來分享給大家。


一、由C到C++

各種程式語言類比

1.1 C++概述

1.2 為什麼要學習c++?

C++是高性能軟體開發的傑出語言,它的語法已經成為專業程式語言的標準,並且它的 設計思想在計算界引起深刻的反響。Java和C#語言都是從C++發展而來的。

C++是現代編程的基礎。

C++被廣泛應用於教學和研究。這很令一些人吃驚,因為有些人曾 經——正確地——指出,C++並不是已經設計的各種語言中最小和 最清晰的。但不管怎樣,它是:
對於教授基本概念而言是足夠清晰的。
對於深刻的項目而言足夠現實、高效和靈活的。
對依賴各種不同開發和執行環境的組織或研究機構而言,使 用起來足夠方便。
對作為教高級概念和技術的媒介而言,足夠的容易理解。
對作為從學習到非學術使用的工具而言,也足夠商業化。

1.3 C++語言基礎二、C++的數據類型和運算符2.1 第一個c++程序

1#include<iostream>//包含頭文件iostream
2using namespace std;
3int main()
4{
5    cout<<"Hello World."<<endl;
6    return 0;
7}
8


2.2 C++中的數據類型

2.2.1布爾型(bool)/邏輯型數據及其運算

C 和C++中都用數值1代表「真」,用0代表「假」。

C++增加了邏輯型數據類型:bool型

邏輯型常量只有兩個,即false(假)和true(真)。
bool found,flag=false;    
found=true;

邏輯型使程序直觀易懂。

在編譯系統處理邏輯型數據時,將false處理 為0,將true處理為1。

在實際中,非0被視為「真」,0被視為「假」

邏輯型數據可以與數值型數據進行算術運算

邏輯運算的規則照舊

邏輯運算表

2.2.2 結構體類型在定義變量時,其前struct可以省略

例:

1#include<iostream>
2using namespace std;
3struct student
4{
5    int no;
6    float math;
7};
8int main()
9{
10    int n;
11    cin>>n;
12    student wang;
13    wang.no=n;
14    cin>>wang.math;
15    cout<<wang.no<<" "<<wang.math<<endl;
16    return 0;
17}

2.2.3 強制類型轉換

1double x = 2.5,y = 4.7;
2int a = 25,b;
3b = a+(int)(x+y);
4y = double(5%3);

2.2.4 新增動態內存分配的運算符

1int *p1,*p2,*p3;
2p1 = new int;
3p2 = new int[5];
4p3 = new int(5);

new為程序分配一塊內存空間,並返回指向該內存的首地址。

1delete p1;
2delete p3;
3delete[]p2;

用new獲取的內存空間,必須用delete進行釋 放;
C語言中由malloc()函數分配內存, 由free()函數釋放內存

2.2.5 新增作用域運算符 ::

例:

1#include <iostream>
2using namespace std;
3float a = 2.4;
4int main()
5{
6    int a = 8;
7    cout<<a<<endl;
8    cout<<::a<<endl;
9}

例:

1#include <iostream>
2
3float a = 2.4;
4int main()
5{
6    int a = 8;
7    std::cout<<a<<std::endl;
8    std::cout<<::a<<std::endl;
9}
10

2.2.6 變量的引用(reference)

1int a;
2int &b = a;
3a = 20;
4cout<<b<<endl;

聲明變量b為引用類型,不另開闢內存單元來存放b的值。

b和a佔內存中的同一個存儲單元,它們具有同一地址。

a或b的作用相同,都代表同一變量。

引用可以理解為:使變量b具有變量a的地址。

&是引用聲明符,並不代表地址。不同於「把a的值賦給b的地址」。

例:

1#include <iostream>
2#include <iomainp>
3using namespace std;
4int main()
5{
6    int a = 10;
7    int &b = a;
8    a = a*a;
9    cout<<a<<" "<<b<<endl;
10    b = b/5;
11    cout<<b<<" "<<a<<endl;
12    return 0;
13}

增加引用類型,主要用於擴充函數傳遞數據功能

1#include <iostream>
2using namespace std;
3void swap(int &a,int &b);
4int main()
5{
6    int i,j;
7    i = 3,j = 5;
8    swap(i,j);
9    cout<<"i="<<i<<" "<<"j="<<j<<endl;
10    return 0;
11}
12void swap(int &a,int&b)
13{
14    int temp;
15    temp = a;
16    a = b;
17    b = temp;
18}

2.2.7 常變量(constant variable)

常變量:在定義變量時,加上關鍵字 const,則變量的值在程序運行期間不 能改變
例:

1const int a = 3;
2const int b = 3 + 6,c = 3*cos(1.5);

例:

1#include<iostream>
2using namespace std;
3const int price = 30;
4int main()
5{
6    int num,total;
7    num = 10;
8    total = num*price;
9    cout<<"total="<<total<<endl;
10    return 0;
11}

相關焦點

  • 學習c++筆記——標準輸出流cout
    c++語言標準輸出流cout是啥?」。我答:「就是在列印設備或顯示設備上輸出息信」 。女粉絲問:「陳老師,可以教我嗎。」。我答:「好的~!」,下面我就教大家c++語言中cout的用法,c++語言1是一個很cout輸出案例,下面我們就一步一步講解下這個套代碼。
  • 如何正確通過 C++ Primer 學習 C++?
    以C++ Primer第五版為例,第一遍讀的時候:Part1也就是前七章,除了6.6,6.7節,都要通讀。尤其是第三章初步介紹了vector和string,簡直就是新手福音,搞定這兩個容器就能寫一些簡單的程序。Part2基本就是數據結構和算法,如果有基礎讀起來很輕鬆。9,11兩章介紹的容器,以及12.1節的智能指針要通讀。
  • 九大程式語言優缺點第四期:c++
    上一期給大家介紹了C語言,理所應當的本期給大家了解下C語言的超集,c++那麼接下來給大家介紹主流程式語言:C++、JavaScript、C#、Ruby、PHP以及Objective-C,對於這幾種語言,大家都能看到由其打造的頂尖應用,我們一起來了解一下吧。
  • c++入門教程-1
    1、安裝g++編譯器用root用戶登錄伺服器,執行以下命令安裝或升級gcc-c++編譯器。yum -y install gcc-c++如果您的CentOS系統沒有安裝gcc-c++,以上命令就會安裝最新版本的gcc-c++,如果已經安裝了gcc-c++,就會更新到最新版本的gcc-c++,所以,以上命令不管執行多少次都沒有問題。
  • 現代C++學習筆記(0):開篇
    這是我的第 20 篇原創文章(題圖來自網絡並做適當修改)安身立命的本事,還是不能丟的
  • Go語言學習筆記之字符串一
    Go語言是一個年輕人,身上擁有c++,java,python等語言的特點。在網絡通信、並發和並行編程擁有極好的體驗,當然不僅僅在這上上面,還有網絡編程,web應用,應用下載等有著非常大的潛力。這裡列舉一些 Go 語言的特點: 簡化問題,易於學習 內存管理,簡潔語法,易於使用 快速編譯,高效開發 高效執行 並發支持,輕鬆駕馭, 靜態類型 標準類庫,規範統一 易於部署 文檔全面 免費開源學習go語言有幾天了,今天突然想到把學的寫成筆記,記錄一下。如有不正確的請指教。
  • C 2 C++進階篇(1)
    之前一直是對於面向過程的編程,python有過那種對象風格的編程,但是對於oop的實際開發還停留在表面,沒有獨立的開發c++經驗,也有好幾年沒有碰過c了。由於接手Qt的相關項目,所以對c to c++的進階希望能進行個自我總結。
  • 新手如何學習C語言
    如果想要學習C語言,首先應該學好計算機基礎。裡面的很多概念以及基本的常識對於C程式設計師都是非常重要的。如果在著手學習C語言之前,或者已經開始學習C語言,但是碰到了很多問題,應該再把計算機基礎的書拿來好好看看。    條件允許應該在學習C語言之前學學彙編,這會對許多比較細膩的概念有清醒的認識。
  • C++伺服器開發完整學習路線(含免費學習資料下載地址)
    C++伺服器開發完整學習路線(含免費學習資料下載地址)相信大部分同學剛畢業或者想轉行做c++服務端開發的時候都很迷茫不知道從哪裡開始學習,於是準備參加各種培訓班或者網絡培訓,無奈動不動成千上萬元的高昂的價格另人望而卻步,對於在校學生或者剛出來就業的新人無疑是沉重都打擊,最後決定自學,但是卻不知道從哪裡下手。
  • 現代C++學習筆記(1):工具資源篇
    這是我的第 26 篇原創文章(題圖來自網絡並做適當修改)所謂「工欲善其事,必先利其器
  • C 語言會比 C++ 快?
    和面向過程的 C 語言相比,其繼承者 C++ 不僅可以進行 C 語言的過程化程序設計,還可以進行以繼承和多態為特點的面向對象的程序設計。要論兩者上手的難易度,對此,有網友評價道,學好 C 只要 1 年,而學好 C++ 需要的可能不止 10 年。
  • c++之重載函數學習總結
    當函數名和不同的參數搭配時函數的含義不同注意:在c語言中是沒有函數重載這個概念的。c++中通過函數名和函數參數確定函數調用二、重載函數進階學習1、重載與指針:下面的函數指針將保存哪個函數的地址?+編譯器能夠兼容c語言的編譯方式c++編譯器會優先使用c++編譯的方式extern關鍵字能夠強制讓C++編譯器進行c方式的編譯:extern "c"{
  • 成都c++學習路線教程:用C語言畫一個「心形」,程式設計師的浪漫!
    成都c++學習路線教程:用C語言畫一個「心形」,程式設計師的浪漫值得擁有!你以為C語言就是提供一種編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的程式語言嗎?你以為C語言就只是以一個標準規格寫出的C語言程序可在許多電腦平臺上進行編譯,甚至包含一些嵌入式處理器以及超級電腦等作業平臺嗎?
  • C++之字符串類學習總結
    一、回顧c語言對字符串的實現:一般我們在c語言要實現對字符串操作的話,一般是採用字符數組或者一組函數來實現的,為啥這樣做呢,那是因為c語言裡面根本就沒有字符串類型的關鍵字;而且c語言也支持自定義類型,所以更加無法獲得字符串類型為了解決這個問題,在c++中,引入了自定義類型,而且可以通過類來完成對字符串類型的定義。
  • C++落選,2021年最想學習的五大程式語言
    但在此之前,我們要先來了解一下程式語言都有哪些類型。函數式程式語言:函數用於存儲數據、重複任務和返回輸出。面向對象式程式語言:是最常用的語言,因為它接近現實世界的模型,其中每個實體都是一個對象,並通過繼承(Inheritance)等概念實現了可重用性和冗餘。腳本語言:不屬於成熟的程式語言,由支持應用程式的各類編程小元素組成。
  • C/C++編程筆記:C語言結構和C++結構之間的區別,又學到了嗎?
    在C語言中,必須對Record變量使用「 struct Record」。在C ++中,我們不需要使用struct,而僅使用'Record'可以。靜態成員: C結構不能具有靜態成員,但C ++允許。C輸出:2sizeof運算符:該運算符將為C中的空結構生成0,而為C ++中的空結構生成1。
  • 跟我學C++中級篇——STL的學習
    一、c++標準庫C++的標準庫主要包含兩大類,首先是包含C的標準庫的,當然,為了適應c++對一些C庫進行了少許的修改和增加。最重要的當然是面向對象的c++庫;而c++庫又可以分成兩大類,即面向對象的c++庫和標準模板庫,也就是題目中的STL。
  • 2021年最新整理, C++ 學習資料,含C++ 新特性、入門教程、推薦書籍、優質文章、學習筆記、教學視頻等​
    在 Stroustrup 可以使用的所有語言中,有一種被稱為 Simula 的語言,顧名思義,它可能是一種主要為仿真而設計的語言。Simula 67 語言是 Stroustrup 使用的變體,被認為是支持面向對象編程範例的主要語言。Stroustrup 發現這種範例對包裝開發很有幫助。但是,Simula 語言對於實踐和實際使用而言太慢了。
  • c++ 之布爾類型和引用的學習總結!
    一、布爾數據類型:在c語言裡面我們知道是沒有布爾數據類型的,而在C++中添加了布爾數據類型(bool),它的取值是:true或者false(也就是1或者0),在內存大小上它佔用一個字節大小,不過在c++中的三目運算符的用法就比c語言更加高級了,來先看一個示例:int a = 1;int b = 2;( a < b) ?
  • 《信息奧賽一本通》第一章C++語言入門課後題解
    【輸入樣例】1 2【輸出樣例】3參考程序:#include<bits/stdc++.h>using namespace std;int main(){    int a,b; cin>>a>>b; cout<<a+b<&