日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++中引用的本质

發(fā)布時間:2025/7/14 c/c++ 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++中引用的本质 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一般的教材上講到引用時,都是說“引用是對象的一個別名”。我認為這種定義是不清晰的,不利于初學(xué)者理解引用。至少我自己曾經(jīng)被這個定義困擾了一段時間。到底什么是“別名”?

??? 實際上,引用的實質(zhì)是位于xxxxxx地址上的一個xxxx類型的對象。比如教科書上常用的例子:

??? int a = 5;?????????? //不妨假設(shè)編譯器將a分配到0x400000

??? int &b = a;

??? 這里面b的準確意義就是,放在0x400000地址上的一個int類型對象。這里面包括了兩重含義,首先b是一個int類型對象,因此他的使用完全與 int類型對象一樣。另外這個int類型對象的地址是0x400000,因此從底層來看,它具有指針的一些特性,無論你怎樣傳遞,他都代表放在 0x400000的那個int.

??? 在c++中,引用全部是const類型,定義之后不可更改。實際上“引用”對目標代碼來說是不存在的,因為對于編譯器來說,使用上例中的b就是使用 0x400000地址的那個int.引用一經(jīng)定義,就不會指向別的地址,也不會指向別的類型,因此編譯器不會專門開辟空間存儲這個引用,而是將發(fā)送引用的地方替換為真正的地址,接收引用的地方則替換為接受指針

??? 在java中,數(shù)據(jù)對象也都是引用類型,但是這里的引用與C++有很大不同,他們不是const類型,可以指向一個空值,也可以隨時更改其指向的內(nèi)存地址。這實際上與C++中的指針概念完全對應(yīng)。java中的引用實際上對應(yīng)C++中的指針而非引用,只不過是省去了C++中指針的取地址(&)與取值(*)操作。

?

指針和引用的區(qū)別?

?

(1)引用在創(chuàng)建時必須初始化,指針可以不初始化,引用不可以為NULL指針可以。 (2)不存在指向空值的引用,但是存在指向空值的指針。 (3)引用初始化后不能被改變,指針可以改變所指的對象.

轉(zhuǎn)載于:https://www.cnblogs.com/abelian/p/6023602.html

總結(jié)

以上是生活随笔為你收集整理的C++中引用的本质的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。