C++中引用與指針的區別


請說出C++中引用和指針的區別。(華為、騰訊、阿里等)

 

參考答案:

 

(1)當引用被創建時,它必須被初始化。而指針則可以在任何時候被初始化。

 

(2)一旦一個引用被初始化為指向一個對象,它就不能被改變為對另一個對象的引用。而指針則可以在任何時候指向另一個對象。

 

(3)不可能有NULL引用。必須確保引用是和一塊合法的存儲單元關聯。

 

進一步解析:

 

指針和引用都是 C++ 中的基本語法成份,它們既有聯系,也有不同之處。

 

它們都是地址的概念,其中指針指向一塊內存,它的內容是所指內存的地址;而引用是某塊內存的別名,具體來說,指針是一個變量的地址,引用是一個變量的別名。

 

但它們的不同之處也很明顯,體現在以下方面:

 

  • 指針是一個實體,而引用僅是個別名;

     

  • 引用必須被初始化,指針不必;

     

  • 引用只能在定義時被初始化一次,之后不可變;指針可以改變所指的對象;

     

  • 可以有const指針,但是沒有const引用;

     

  • 不存在指向空值的引用,但是存在指向空值的指針,即引用不能為空,指針可以為空;

     

  • “sizeof 引用”得到的是所指向的變量(對象)的大小,而“sizeof 指針”得到的是指針本身(所指向的變量或對象的地址)的大小;

     

  • 指針和引用的自增(++)運算意義不一樣;

     

  • 程序為指針變量分配內存區域,而引用不需要分配內存區域;

     

  • 指針可以有多級,但是引用只能是一級,例如int **p是合法的,而 int &&a是不合法的;

     

  • 指針和引用作為函數參數進行傳遞時也不同。用指針傳遞參數,可以實現對實參進行改變的目的;在將引用作為函數參數進行傳遞時,實質上傳遞的是實參本身,而不是實參的一個拷貝,因此對形參的修改其實是對實參的修改。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM