標籤:null 指標 相關 自動 運算子 包含 情況 資料類型 不可 區別
一.struct與class的區別
1. struct與class的區別不大
在預設情況下,class預設的許可權是private(私人的),struct預設的是public(共有的)。
2.但是在C++中,struct進行了擴充,現在它已經不僅僅是一個包含不同資料類型的資料結構了,它包括了更多的功能。
二 .malloc與new,delete與free的區別
1.malloc與free是庫函數裡的函數,調用時要添加標頭檔,delete與new是C++中的運算子
2.malloc傳回值是void*指標,new返回的是有類型的指標
3.malloc建立時不會調用建構函式,free不用調用解構函式,但new與delete會自動調用
4.delete不可以重複釋放,但是可以釋放null 指標。
三.指標與引用
《A.引用》
1.通俗的講,引用就是取別名
2. 引用必須初始化,不能定義Null 參考,“野引用”,“懸Null 參考”是存在的(引用堆記憶體的資料,當堆記憶體釋放後就不應該使用了)
3.引用只能是一次性的,無法再更改(引用一旦成功,他就是一個變數了)
4. 引用也可以當做函數的參數,它引用的對象就是函數的實參,引用可以達到指標的效果
a.函數之間共用變數(指標也可以)
b. 提高參數的傳遞效率(比指標要高)
c. 當參數來使用,
建議:能使用引用就不要使用指標,但是引用不可以取代指標
5. 引用也可以當做函數的傳回值,但絕不能返回局部變數的引用
《B.指標》
1.可以在這三種情況下使用指標:1.函數指標共用變數 2. 使用堆記憶體 3. 最佳化傳參 4. 可以訪問硬體記憶體
2. 使用指標要注意的情況
1. 定義指標變數時初始化
2. 不返回局部變數的地址
3. 指標所指向的空間被釋放時,要即使置空
3. 與const相關的指標
const int* p :不能通過*p去修改他指向的記憶體
int const* p 不能通過*p去修改它指向的記憶體
int * const p : 無法改變p
const int * const p :p無法改變,*p無法去改變記憶體
malloc與new,C++中的指標與引用,C++struct與class的區別