malloc與new,C++中的指標與引用,C++struct與class的區別

來源:互聯網
上載者:User

標籤: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的區別

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.