1. 程式人生 > 實用技巧 >C++學習筆記(一)

C++學習筆記(一)

文章目錄

一、C++簡介

1、起源

二十世紀八十年代初貝爾實驗室。

2、應用範圍

文書處理程式、編譯器、作業系統、大型遊戲等。

3、從C到C++

  • C是結構化和模組化的語言,面向過程,未完全實現解決軟體設計危機的目標。
  • C++保留了C原有的所有優點,對C的功能進行了擴充,增加了面向物件的機制。
    :C++對C的擴充
    ①變數的定義可以出現在程式中的任何行;
    ②提供了標準輸入輸出流物件cin,cout;
    ③用const定義常變數;
    ④函式過載、函式模板、帶預設值的函式;
    ⑤應用型別;
    ⑥單目作用域運算子;
    ⑦string型別字串;
    ⑧使用new和delete代替malloc和free函式等。

4、C++開發工具

  • 記事本(Notepad++)+命令列、
  • Visual C++ 6.0、
  • VS(Visual Studio)2015(功能強大,體積龐大)、
  • CodeBlocks(開源免費,專業推薦)、
  • 其他(DEV C++、CLion、C-Free、Xcode、C4droid)。

5、C++程式碼規範

C++程式碼規範

二、C++基礎語法

1、常用資料型別

在C++常用資料型別
資料型別小結

2、變數

(1)變數的概念

變數就是一塊記憶體空間
——通過變數可以簡單快速的找到記憶體中儲存的資料。

(2)變數的命名

變數名只能由字母數字下劃線三種字元組成;
第一個字元必須為字母或下劃線。

(3)變數的宣告和使用

  • 資料型別 變數名;(宣告變數)
  • 資料型別 變數名=值;(定義時初始化變數)
  • 資料型別 變數名;變數名=值;(定義後初始化變數)

3、運算子

(1)運算子的種類

  • 算數運算子
  • 轉義運算子
  • 關係運算符:>、<、>=、<=、==、!=(C++中引入布林型別,true表示真,false表示假。)
  • 位運算子:&、|、~、^(異或)、<<(左移)、>>
  • sizeof運算子:可以獲得資料型別佔用記憶體空間的大小。s加粗樣式izeof(type_name);結果以位元組為單位。

(2)運算優先順序

  • 括號優先順序最高;
  • 單目運算子優先級別高賦值運算子優先級別最低
  • 從右向左結合性的只有賦值運算子、三目運算子和單目運算子;
  • 算數運算子>關係運算符>邏輯運算子。

4、結構體

  • 條件if/switch、
  • 迴圈while/do-while/for、
  • break(跳出迴圈,執行迴圈之後的語句)、
  • continue(跳過本次迴圈,繼續下次迴圈。

5、陣列

(1)什麼是陣列?

——陣列是一個變數一塊記憶體空間),由資料型別相同的一組元素組成(一塊連續的記憶體空間)。

(2)陣列的結構和基本要素

識別符號、陣列元素、元素下標、元素型別。

(3)陣列的替代品

陣列的替代品

6、指標(pointer)

(1)什麼是指標?

——指標是一個值為記憶體地址的變數(或資料物件)。
強烈建議初始化所有的指標,並儘可能在定義了物件之後再定義指向它的指標。

(2)指標的基本用法

——資料型別 * 指標變數名。
注:

  • int* p的寫法偏向於地址,即p就是一個地址變數,表示十六位地址;
  • Int *p的寫法偏向於值,*p是一個整形變數,能夠表示一個整型值;
  • 宣告中的號和使用中的號含義完全不同。

(3)特殊型別指標

  • 空指標(null pointer)——不指向任何物件,在試圖使用一個指標之前可以首先檢查是否為空。
  • void*指標——種特殊的指標型別,可以存放任意物件的地址。

(4)陣列與指標

  • 陣列名就是這塊連續記憶體單元的首地址——num與&num[0]的值相同;
  • 陣列第i+1個元素可以表示為:①地址:&num[i + 1]或num + 1;②值:num[i + 1]或*(num + i + 1)或*++num
  • 為指向陣列的指標賦值:int * ptr_num = num;
  • 指標變數可以指向陣列元素:int * ptr_num = &num[4]。

7、引用(reference)

(1)引用的概念

  • 引用即別名,並非物件,引用只能繫結在物件上;
  • 引用更接近const(常量)指標,一旦與某個變數關聯起來,就將一直效忠於他;
  • 將引用變數用作引數時,函式將使用原始資料,而非副本;
  • 當資料所佔記憶體較大時,建議使用引用引數。
  • 返回引用:不要返回區域性變數的引用;函式可以不返回,預設返回傳入的應用物件本身。

(2)指標與引用

  • 引用對指標進行了簡單封裝,底層仍然時指標;
  • 獲取引用地址時,編譯器會進行內部轉換。

(3)使用引用引數的一些指導原則

使用引用引數的一些指導原則

8、動態分配記憶體

  • 使用new動態分配記憶體;
  • 使用delete釋放記憶體。
    例:動態分配的陣列
    Int * intArray = new int[10];(new運算子返回第一個元素的地址)
    Delete [] intArray;
    補充:程式的記憶體分配