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

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

 

參考答案:指針

 

(1)當引用被建立時,它必須被初始化。而指針則能夠在任什麼時候候被初始化。對象

 

(2)一旦一個引用被初始化爲指向一個對象,它就不能被改變爲對另外一個對象的引用。而指針則能夠在任什麼時候候指向另外一個對象。內存

 

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

 

進一步解析:騰訊

 

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

 

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

 

但它們的不一樣之處也很明顯,體如今如下方面:程序

 

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

     

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

     

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

     

  • 能夠有const指針,可是沒有const引用;

     

  • 不存在指向空值的引用,可是存在指向空值的指針,即引用不能爲空,指針能夠爲空;

     

  • 「sizeof 引用」獲得的是所指向的變量(對象)的大小,而「sizeof 指針」獲得的是指針自己(所指向的變量或對象的地址)的大小;

     

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

     

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

     

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

     

  • 指針和引用做爲函數參數進行傳遞時也不一樣。用指針傳遞參數,能夠實現對實參進行改變的目的;在將引用做爲函數參數進行傳遞時,實質上傳遞的是實參自己,而不是實參的一個拷貝,所以對形參的修改實際上是對實參的修改。
相關文章
相關標籤/搜索