C++: 21---引用和指针
一般說到誰和誰怎么樣,要么說兩者的相似點,要么兩者的區(qū)別,這里我們也要說二者的區(qū)別和聯(lián)系,同時,也不僅僅是區(qū)別和聯(lián)系這么簡單,因為你可能會發(fā)現(xiàn)在變量賦值,函數(shù)傳參這兩點還是有很多值得品一品的。
最直觀的賦值方面的區(qū)別
首先我們先說二者的區(qū)別和聯(lián)系。
(1)指針:指針是一個變量,只不過這個變量存儲的是一個地址,指向內(nèi)存的一個存儲單元;而引用跟原來的變量實質(zhì)上是同一個東西,只不過是原變量的一個別名而已。如:
int a=1;int *p=&a;
int a=1;int &b=a;
上面定義了一個整形變量和一個指針變量p,該指針變量指向a的存儲單元,即p的值是a存儲單元的地址。
而下面2句定義了一個整形變量a和這個整形a的引用b,事實上a和b是同一個東西,在內(nèi)存占有同一個存儲單
元。
(2)引用不可以為空,當(dāng)被創(chuàng)建的時候,必須初始化,而指針可以是空值,可以在任何時候被初始化。
(3)可以有const指針,但是沒有const引用;
(4)指針可以有多級,但是引用只能是一級(int **p;合法 而 int &&a是不合法的)
(5)指針的值可以為空,但是引用的值不能為NULL,并且引用在定義的時候必須初始化;
(6)指針的值在初始化后可以改變,即指向其它的存儲單元,而引用在進行初始化后就不會再改變了。
(7)”sizeof引
總結(jié)
以上是生活随笔為你收集整理的C++: 21---引用和指针的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Redis:19---常用功能之(Hyp
- 下一篇: TensorFlow(4)-TFReco