C++Day02

蘇明生Louis發表於2020-10-16

Day02

指標

可以通過指標間接訪問記憶體

  • 記憶體編號是從0開始記錄的,一般用十六進位制數字表示
  • 可以利用指標變數儲存地址(指標就是一個地址)

定義和使用

語法:資料型別 *變數名;

指標前加一個 * 代表解引用,找到指標指向的記憶體中的資料

指標所佔記憶體空間

32位作業系統下佔用4個位元組空間,64位下佔用8個位元組(不管是什麼資料型別)

空指標

空指標:指標變數指向記憶體中編號為0的空間

用途:初始化指標變數

注意:空指標指向的記憶體是不可以訪問的

(0~255之間的記憶體編號是系統佔用的,因此不可以訪問)

野指標(錯誤)

指標變數指向非法的記憶體空間

在程式中,要儘量避免野指標的出現

總結:空指標和野指標都不是我們申請的空間,因此不要訪問

const修飾指標

三種情況:

  1. const修飾指標 — 常量指標 指標的指向可以修改,但是指標指向的值不可以修改
  2. const修飾常量 — 指標常量 指標的指向不可以修改,但是指向的值可以修改
  3. const既修飾指標,又修飾常量指標和陣列

指標和陣列

利用指標訪問陣列中的元素

指標和函式

利用指標作函式引數,可以修改實參的值

值傳遞不會改變實參

地址傳遞會改變實參

案例:陣列氣泡排序

結構體

結構體屬於使用者自定義的資料型別,允許使用者儲存不同的資料型別

語法:struct 結構體名{結構體成員列表};

結構體定義和使用

通過結構體建立變數方式有三種:

  1. struct 結構體名 變數名
  2. struct 結構體名 變數名={成員1值,成員2值…}
  3. 定義結構體時順便建立變數(不建議使用)

建立結構體變數時可以省略關鍵字struct,定義時不行

結構體陣列

將自定義的結構體放入到陣列中方便維護

結構體指標

通過指標訪問結構體中的成員

  • 利用操作符->可以通過結構體指標訪問結構體屬性

結構體巢狀結構體

結構體中的成員可以是另一個結構體

結構體做函式引數

將結構體作為引數向函式中傳遞,兩種方式:

  • 值傳遞
  • 地址傳遞

如果不想修改主函式中的資料,用值傳遞,反之,用地址傳遞

結構體中const使用場景

用const來防止誤操作

案例:通訊錄管理系統