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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

c++中的引用和python中的引用_【总结】C++、C#、Java、Javascript、Python中引用的区别...

發布時間:2023/12/2 C# 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++中的引用和python中的引用_【总结】C++、C#、Java、Javascript、Python中引用的区别... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先分兩大陣營:C++中引用是一塊陣營,

C#、Java、Javascript、Python中引用是另一塊陣營。

之所以這樣分是因為同一陣營中引用使用方法基本一樣。

C++引用本質是個常量指針,而其他語言引用本質是個普通指針。也就意味著C++的引用一旦初始化(指向確定了),以后就不可再修改(不可再指向其他對象),而其他語言的引用可以隨時修改指向。

具體區別:(先聲明下面所說的賦值是指“=”)

一個變量使用無非就兩種情況,讀取變量的內容和給變量賦值。兩大陣營中只有在讀取引用時行為都一樣,在給引用賦值時行為不一樣。

讀取引用時:都是對引用進行“解引用”,結果是讀取了引用指向的實際變量的值。

給引用賦值時:C++依然進行“解引用”,所以C++中碰到給引用賦值的語句時,本質是給引用指向的變量賦值;而在其他語言中不進行“解引用”,本質是給引用這個指針賦值。

正因為C++引用在讀取和賦值時表現都一樣(都是解引用),所以很多書上說引用就是變量的別名,因為任何時候使用引用(不管是賦值還是取值)都是使用引向的變量,故而引用表現的就好像變量的別名一樣(但要認清本質,千萬不要認為引用不占內存空間,實際上他是個指針也占內存空間的)。

但是在其他語言中引用就是指針,不是變量的別名,因為給引用賦值時沒有自動解引用,就是給指針賦值(操作的是指針,不再是變量了,所以不能稱之為別名);取引用的值時會自動解引用,就是取得引向的變量的值。(你可以稱之為“半個別名”)

那么問題來了,在其他語言中,怎么給引用引向的變量賦值呢(第二次以上的賦值,第一次是變量自己的構造函數自動賦值)?

答:只能通過copy函數,不同語言都有對copy函數的不同實現。注意copy和構造函數不一樣,構造函數是給還不存在的變量賦值,也就是建立變量并給變量第一次賦值;而copy函數是給已經存在的變量賦第二次以上的值。

最后補充一下,C++、C#、Java中的引用是有類型的,也就是說指針是有類型的,不可隨意更改這個引用(指針)的類型;而在Javascript、Python等腳步語言中,引用是沒有類型的,也就是說指針是沒有類型的,可以隨意更改引用(指針)的類型,也即引用是“無類型的”,可以隨意指向任何數據類型。

總結

以上是生活随笔為你收集整理的c++中的引用和python中的引用_【总结】C++、C#、Java、Javascript、Python中引用的区别...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。