python的引用和C 的引用不一樣嗎?

時間 2021-11-03 17:17:04

1樓:布客飛龍

不要拿 C++ 的設施,包括但不僅限於引用,區域性作用域,全域性作用域,函式來理解 Python。

以及,同乙個名稱在不同語言裡面,不一定指代相同的東西。

Python 為了避免這種情況,特意用了「繫結」這個詞。結果你們還是引用引用引用。

2樓:吶吶啵

python中,a=2,表示a是2的引用,b=a,表示把a的引用給了b,b也是2的引用。a=3,表示a又變成了3的引用。

3樓:ltoddy

Python所有的變數,對應在CPython中是Py_Object*這個結構體指標,Python每次賦值的時候都會建立乙個新的Py_Object。

4樓:

輪子哥已經答得很清楚了,這就是python入門程式設計的問題所在:你根本就沒理解指標,引用,變數等等這些很基礎的東西的確切的含義,只是理解了一堆容器以及容器的方法。你會發現,python繼續學下去,學習曲線就會越來越陡峭,越來越難。

python裡a和b都是引用,真正的不變是2。C++裡如果int a=2,int &b=a,那麼a此時就相當於是2,b為a的引用。

5樓:程與童

這和Python的實現有關。

小整數是不可變物件,雖然底層是指標,但會表現得像「值」一樣。

你在C++中寫:

inta=3

;intb=

a;a=

2;b的值也不會變。

在你的截圖中也可以看到,值改變後,a和b已經不是同乙個物件了。

Python中的「不可變物件」和(其他語言中的)「值」有相同的行為,並不說明其背後的機制(記憶體分配,賦值方式,etc)是相同的。

C 模板型別推斷和引用摺疊的聯絡?

王賽 左值和右值,指的不是變數本身的型別,而是變數構成的表示式值型別。表示式值型別是左值還是右值,有一套完整的定義規則,cppreference 上有,手機上答題,不方便找。針對這個題目,三個變數做引數,都屬於 id expression,屬於 lvaue 表示式,對應的具體型別實際上是 int 那...

最近學python,知道了a 3,是引用不是賦值,但是a是放在那裡,怎麼看a的位址啊?

影子 a就是在計算機中的所儲存的物件,而id a 就是a在計算機記憶體的位址,當我們要使用a所繫結的變數,當我們要使用a時,直接呼叫即可,計算機會幫我們給出繫結的物件。 不需要關心 a 的位址 Python 中去除了指標概念 實際上 a 可以認為指向了 3的位址,所以a實際上就是個指標,如果有了解過...

C 函式返回常引用給常引用初始化的問題,大家可不可以幫幫我?

黃亮anthony std string get std string t return t 就能滿足這裡的要求。謹慎所有返回引用函式 記憶體塊生命週期 不說人話 字串字面值隱式構造了string物件,get的引數引用了該string物件。但是該物件產生於get函式執行週期內,且由該週期內的棧持有,...