指针和引用的区别和联系
在c++的學(xué)習(xí)中,我們經(jīng)常被應(yīng)該如何使用指針和引用這個(gè)問(wèn)題所困擾,那么我這里給大家說(shuō)一下在我的學(xué)習(xí)過(guò)程中對(duì)指針和引用的理解,和它們之間的區(qū)別,希望各位朋友給出不同的意見(jiàn)并且指出我在學(xué)習(xí)中的一些錯(cuò)誤
??? 首先我們來(lái)聊一下指針,相信我們?cè)?/span>C的學(xué)習(xí)中就會(huì)遇到這個(gè)在C編程中無(wú)處不在的朋友。
??? 指針本來(lái)就是用來(lái)存放地址的一個(gè)變量,其中他存放的地址和存放地址中的數(shù)據(jù)都可以被更改除非你這樣(const int * const p = 12) 首先我們定義指針時(shí)通常是:
??? int * p = 12;
??? 可以知道p是一個(gè)指針變量,里邊存儲(chǔ)的是數(shù)值12所在內(nèi)存單元的地址,*的含義即是用于執(zhí)行間接訪問(wèn)的一個(gè)單目運(yùn)算符,他可以去訪問(wèn)p中的地址從而得到12這個(gè)值。
??? 指針傳遞是一種值傳遞的方式,他傳遞出去的只是地址值,值傳遞的時(shí)候中我們可以知道被調(diào)函數(shù)的形參會(huì)被當(dāng)做一個(gè)局部變量來(lái)出來(lái),會(huì)在棧中去給其分配空間用 來(lái)存儲(chǔ)主調(diào)函數(shù)傳輸過(guò)來(lái)的值,該值只不過(guò)是主調(diào)函數(shù)中實(shí)參值的一個(gè)拷貝,所以在被調(diào)函數(shù)中去修改傳輸過(guò)來(lái)的值并不會(huì)去影響主調(diào)函數(shù)中的實(shí)參值。
現(xiàn)在我們來(lái)總結(jié)一下
相同點(diǎn)
他們都是和地址有關(guān)系的,我們可以看到指針指向一塊內(nèi)存,而引用是一塊內(nèi)存的別名;
?不同點(diǎn)
1指針是一個(gè)實(shí)體他在棧中有自己使用的空間,但是引用沒(méi)有;
2引用必須初始化,指針不用但是最好初始化
3指針使用時(shí)必須加*,引用不用;
4引用只能初始化一次是個(gè)專一的人,指針不是;
5引用不用const去修飾,但是指針可以
6指針和地址運(yùn)用自增(++)不同,引用是值進(jìn)行自增,而指針是地址進(jìn)行自增;
聯(lián)系
1引用的內(nèi)部使用指針實(shí)現(xiàn)的(如何實(shí)現(xiàn)這里不做解釋)
2引用是受了限制的指針
總結(jié)
以上是生活随笔為你收集整理的指针和引用的区别和联系的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: git idea提交代码的步骤
- 下一篇: 排序算法之冒泡排序(JAVA)