面試熱門題C與C++的區別-------指針和引用

在面試過程中,C語言和C++的區別總是面試官的側重點,而指針和引用更是容易被問到,指針和引用的區別很簡單,但很少有人能有全面的,有層次有條理的回答這個問題,所以有條理的總結歸納就顯得尤爲重要。

先來了解什麼是指針,什麼是引用

指針:存儲內存中某一塊空間地址的變量。

引用:引用不是定義一個新變量,而是給一個已經定義的變量起一個新的別名。

定義的格式:

指針:類型 *變量名 = 已有變量地址(&已定義過的變量名)

引用:類型 &引用變量名 = 已定義過的變量名

特點:

指針:1.一個指針只能指向一塊空間

   2.指針可以不初始化(不過不建議不初始化)

   3.指針可以在初始化的時候指向一個變量,但在之後使用時可以改變它的內容

   4.sizeof指針時得到的是所指向對象地址的大小

   5.指針自加自減,是指針所指向對象的地址自加自減一個類型大小

引用:1.一個變量可取多個變量名

   2.引用必須初始化

     3.引用只能在初始化的時候引用一次,不能再改變引用其他的變量

   4.sizeof引用得到的是所指向變量的大小。

   5.引用自加自減,是引用對象的值自加自減

const修飾的指針和引用:

指針:const修飾指針,指針不能改變,指針指向的內容可以改變。

引用:1.常量具有常性,只有const修飾的常引用才能引用常量

   2.const修飾引用,引用內容不能改變

   3.不能給不同類型的引用賦值,例如將一個double類型的變量d賦值給一個int類型的引用i,就不能編譯通過。因爲賦值時會生成一個臨時變量。d引用的是這個帶有常性的臨時變量,所以不能賦值。

作爲參數:

   1.值傳遞:如果形參爲非引用的傳值方式,則生成局部臨時變量接收實參的值。

   2.引用傳值:如果形參爲引用類型,則形參是實參的別名(當不希望函數內改變參數x的地址時,儘量採用常引用傳參)。

   3.指針傳參:如果形參爲指針類型,則生成匿名對象接收地址

總結:

1.不要返回一個臨時變量的引用。

2.如果返回對象除了函數的作用域依然存在,儘可能使用引用。

3.指針比引用更靈活,但是也更危險,使用指針時要先檢查指針是否爲空,指針指向的地址釋放後最好置0,否則可能存在野指針問題。

如果還有什麼沒有考慮到的地方歡迎大家指出來!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章