請說出C++中引用和指針的區別。(華爲、騰訊、阿里等)函數
參考答案:指針
(1)當引用被建立時,它必須被初始化。而指針則能夠在任什麼時候候被初始化。對象
(2)一旦一個引用被初始化爲指向一個對象,它就不能被改變爲對另外一個對象的引用。而指針則能夠在任什麼時候候指向另外一個對象。內存
(3)不可能有NULL引用。必須確保引用是和一塊合法的存儲單元關聯。變量
進一步解析:騰訊
指針和引用都是 C++ 中的基本語法成份,它們既有聯繫,也有不一樣之處。語法
它們都是地址的概念,其中指針指向一塊內存,它的內容是所指內存的地址;而引用是某塊內存的別名,具體來講,指針是一個變量的地址,引用是一個變量的別名。引用
但它們的不一樣之處也很明顯,體如今如下方面:程序
指針是一個實體,而引用僅是個別名;co
引用必須被初始化,指針沒必要;
引用只能在定義時被初始化一次,以後不可變;指針能夠改變所指的對象;
能夠有const指針,可是沒有const引用;
不存在指向空值的引用,可是存在指向空值的指針,即引用不能爲空,指針能夠爲空;
「sizeof 引用」獲得的是所指向的變量(對象)的大小,而「sizeof 指針」獲得的是指針自己(所指向的變量或對象的地址)的大小;
指針和引用的自增(++)運算意義不同;
程序爲指針變量分配內存區域,而引用不須要分配內存區域;
指針能夠有多級,可是引用只能是一級,例如int **p是合法的,而 int &&a是不合法的;