欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Python與C++引用的示例分析

本篇文章給大家分享的是有關(guān)Python與C++引用的示例分析,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話(huà)不多說(shuō),跟著小編一起來(lái)看看吧。

專(zhuān)注于為中小企業(yè)提供成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)凌海免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上千多家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

在用Python寫(xiě)建二叉樹(shù)的代碼的時(shí)候遇到了這個(gè)問(wèn)題,原因就是把Python的“引用”與C++的“引用”搞混了,這兩種語(yǔ)言中都有“引用”名詞,雖然大部分時(shí)候很像,其實(shí)還是有區(qū)別的。這里記錄一下,注意,這里只是我自己的一點(diǎn)個(gè)人理解,在找到更好的理解之前,先這樣理解吧!

例子,這是我的兩段根據(jù)先序序列創(chuàng)建二叉樹(shù)的代碼:

# 正確
pos = 0
def create(seq):
    global pos
    ch = seq[pos]
    pos += 1
    if ch == '#':
        return None
    else:
        temp = TreeNode(ch)
        temp.left = create(seq)
        temp.right = create(seq)
        return temp
 
seq = "abd###ce###"
root = create(seq)

還有這個(gè):

# 錯(cuò)誤
def create(root):
    global pos
    if(seq[pos]=='#'):
        root = None
        pos += 1
        return
    root = TreeNode(seq[pos])
    pos += 1
    root.left = None
    root.right = None
    create(root.left)
    create(root.right)

看起來(lái)只是有無(wú)返回值的區(qū)別,實(shí)際上第二段代碼是錯(cuò)誤的,其實(shí)從第二段代碼的思路來(lái)說(shuō),在C++里面可以這樣寫(xiě):

void create(tree & t){
    char ch = str[pos++];
    if(ch=='#'){
        t = NULL;
        return;
    }
    t = new node;
    t->val = ch;
    create(t->left);
    create(t->right);
}

這就是Python中與C++的引用的區(qū)別了。
我是這樣理解的:Python中對(duì)內(nèi)存的使用更像是不可改變的,對(duì)于一個(gè)引用所指向的對(duì)象,如果我要修改值,那么會(huì)先新找一塊內(nèi)存,賦值,然后將引用指向這個(gè)新的內(nèi)存塊,這樣就是修改了引用指向的位置,但是在C++中則是直接在引用所指向的內(nèi)存塊上改變,例如:

Python:
a = 1
print(id(a))
a = a+1
print(id(a))
# 輸出
140708803374848
140708803374880

在C++中:

int t = 1;
int & a = t;
printf("%d    %d\n", &a, a);
a += 1;
printf("%d    %d\n", &a, a);
# 輸出
7208712    1
7208712    2

所以,就像上面的第二段代碼,我傳入了創(chuàng)建的樹(shù)根的引用,但是當(dāng)樹(shù)的結(jié)構(gòu)發(fā)生改變的時(shí)候,實(shí)際上是改變了存儲(chǔ)的位置,這樣原本的函數(shù)外面創(chuàng)建的root引用指向的其實(shí)還是原來(lái)的空內(nèi)存塊(突然覺(jué)得好傻。。就像被偷光了,還在等一樣。。。),但是C++的引用就是很倔強(qiáng)地只認(rèn)那一塊內(nèi)存,所以就可以直接改變使用了。
關(guān)于Python中引用與對(duì)象的關(guān)系,還牽扯到一些內(nèi)存之類(lèi)的知識(shí),例如:

a = 1
b = 1
print(id(a))
print(id(b))
# 輸出
140708803374848
140708803374848

這里是因?yàn)镻ython中為了節(jié)省內(nèi)存,會(huì)將一些短小的字符串以及數(shù)字進(jìn)行緩存,這樣就會(huì)節(jié)省這類(lèi)對(duì)象的建立銷(xiāo)毀的開(kāi)銷(xiāo)了。
其它的就還有關(guān)于可變數(shù)據(jù)對(duì)象(mutable)和不可變對(duì)象(immutable)了,這個(gè)我之前也記錄過(guò)。總有些語(yǔ)言看起來(lái)很簡(jiǎn)單,但是實(shí)際上還是要好好理解的啊。

以上就是Python與C++引用的示例分析,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

文章題目:Python與C++引用的示例分析
文章起源:http://www.aaarwkj.com/article4/igsdoe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、做網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、電子商務(wù)、品牌網(wǎng)站制作云服務(wù)器

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)
成人午夜激情福利动态| 国产精品一区二区三区欧美| 欧美色视频综合在线观看| 黄片超刺激在线看在线| 欧美午夜福利视频电影| 日韩黄色一级免费在线观看| 日本韩国视频一区二区| 在线看黄视频网站永久免费| 国内午夜福利精品视频| 夜夜草av一区二区三区| 蜜桃久久国产精品一区二区| 欧美久久精品在线观看| 三级视频一区二区三区| 国产一级内射在线视频| 亚洲国产欧美日韩国产| 日本人妻中文字幕在线一区| 亚洲国产精品欧美激情| 真人国产一级美女免费视频| 丰满人妻视频一二三区| 美女午夜福利一区二区| 91九色在线免费观看| 色婷婷亚洲婷婷亚洲最大| 中文字幕人妻丝袜乱一区二区| 午夜在线观看视频免费| 精品一级人片内射视频| 亚洲成人日韩成人av| 中国日本欧美最黄大片| av在线视频男人的天堂| 99久久精品费精品国产风间由美| 不卡视频一区二区日韩| 黄色录像免费一内片一级 | 日韩精品一区二区三区夜色| 国产伦精品一区二区三区免费视频 | 草草视频在线观看网站| 日本一区二区手机在线| 亚洲另类偷拍校园伦理| 日韩人成理论午夜福利| 青青草日韩欧美在线观看| 中文字幕乱码人妻一二三| 亚洲人妻不卡一区二区| 亚洲黄色av电影在线|