###基本內置類型和複合類型#程序員
基本內置類型就是算數類型和空類型,算數類型包括字符、整數、布爾值、浮點數,空類型是void;數據結構
複合類型指基於其餘類型定義的類型,例如指針和引用。函數
###引用#操作系統
###指針#指針
####獲取對象地址、利用指針訪問對象#code
指針通常要求指針類型同其所指對象嚴格匹配對象
int a = 10; int *b; b = &a; //經過取地址符獲取變量a地址 int c = *b; //經過解引用符獲取指針b所指變量 double *d = a; //錯誤,指針類型同所指對象不匹配
指針能夠不被初始化,經過取地址符&能夠獲取對象地址,經過解引用符*能夠獲取指針所指對象。遞歸
####指針值及一些好習慣#生命週期
指針值有四種類型:內存
注意:無效指針不等於空指針,無效指針指向了一個未知的位置,而空指針爲0值,因此
int *a; if (a) std::cout<<'1'<<endl; else std::cout<<'0'<<endl;
將輸出爲1。
試圖以任何方式訪問無效指針都引起錯誤,編譯器不負責檢查此類錯誤,無效指針致使了大多數令咱們痛苦的bug和問題,因此應該養成初始化指針的好習慣。
若是沒法肯定指針的初值,那麼應該讓他們等於0或者NULL或者nullptr。
###對象和內存#
在C++中有如下5個內存分配區域:
關於堆和棧的內容,屬於數據結構方面的,棧是一種先進先出的線性表,堆是一種樹形結構。
####內存泄漏和野指針#
內存泄漏
主要是指堆和自由存儲區內存泄漏,一般因爲new或者是malloc以後沒有delete或free掉,致使申請的對象空間在使用完畢後依然停留在內存中,特別是在局部new出的變量,因爲局部指針在脫離其做用域後已經失效,而申請的空間沒有釋放致使再也沒法釋放,就是內存泄漏。
內存泄漏會佔用內存空間,下降程序運行效率,特別是當內存泄漏的操做存在於高頻率執行的環境下,例如循環體或者遞歸中,那麼系統內存消耗將不斷增長,直到最終因沒有可分配內存而崩潰。
野指針
是指兩種狀況:
野指針被使用後,因爲編譯器不會檢查此類錯誤,因此每每容易形成咱們難以發現和理解的錯誤,因此