C++Day02
Day02
指標
可以通過指標間接訪問記憶體
- 記憶體編號是從0開始記錄的,一般用十六進位制數字表示
- 可以利用指標變數儲存地址(指標就是一個地址)
定義和使用
語法:資料型別 *變數名;
指標前加一個 * 代表解引用,找到指標指向的記憶體中的資料
指標所佔記憶體空間
32位作業系統下佔用4個位元組空間,64位下佔用8個位元組(不管是什麼資料型別)
空指標
空指標:指標變數指向記憶體中編號為0的空間
用途:初始化指標變數
注意:空指標指向的記憶體是不可以訪問的
(0~255之間的記憶體編號是系統佔用的,因此不可以訪問)
野指標(錯誤)
指標變數指向非法的記憶體空間
在程式中,要儘量避免野指標的出現
總結:空指標和野指標都不是我們申請的空間,因此不要訪問
const修飾指標
三種情況:
- const修飾指標 — 常量指標 指標的指向可以修改,但是指標指向的值不可以修改
- const修飾常量 — 指標常量 指標的指向不可以修改,但是指向的值可以修改
- const既修飾指標,又修飾常量指標和陣列
指標和陣列
利用指標訪問陣列中的元素
指標和函式
利用指標作函式引數,可以修改實參的值
值傳遞不會改變實參
地址傳遞會改變實參
案例:陣列氣泡排序
結構體
結構體屬於使用者自定義的資料型別,允許使用者儲存不同的資料型別
語法:struct 結構體名{結構體成員列表};
結構體定義和使用
通過結構體建立變數方式有三種:
- struct 結構體名 變數名
- struct 結構體名 變數名={成員1值,成員2值…}
- 定義結構體時順便建立變數(不建議使用)
建立結構體變數時可以省略關鍵字struct,定義時不行
結構體陣列
將自定義的結構體放入到陣列中方便維護
結構體指標
通過指標訪問結構體中的成員
- 利用操作符
->
可以通過結構體指標訪問結構體屬性
結構體巢狀結構體
結構體中的成員可以是另一個結構體
結構體做函式引數
將結構體作為引數向函式中傳遞,兩種方式:
- 值傳遞
- 地址傳遞
如果不想修改主函式中的資料,用值傳遞,反之,用地址傳遞
結構體中const使用場景
用const來防止誤操作