傳值和傳址的區(qū)別 傳值和傳址的區(qū)別?
傳值和傳址的區(qū)別?Passing value ByVal是將數(shù)值傳遞給形式參數(shù)。我將解釋函數(shù)add(ByVal a為整數(shù),ByVal B為整數(shù))dim C為整數(shù)a1b=b1c=abadd=end,上面
傳值和傳址的區(qū)別?
Passing value ByVal是將數(shù)值傳遞給形式參數(shù)。我將解釋函數(shù)add(ByVal a為整數(shù),ByVal B為整數(shù))dim C為整數(shù)a1b=b1c=abadd=end,上面的函數(shù)是傳遞值的,也就是說(shuō),調(diào)用時(shí),例如add(a,B)實(shí)際上等同于add(a,B)。例如,當(dāng)AA=12:BB=3調(diào)用add(AA,BB)時(shí),系統(tǒng)將把值12和3傳遞給函數(shù)“add”。結(jié)果是AA和BB的原始值保持不變,但地址不同。對(duì)于同一個(gè)函數(shù),我將其改為地址傳輸模式:function add(byref,a as integer,byref)B as integer)dim C as integer=a 1b=B 1C=a Badd=cend函數(shù)此時(shí),如果執(zhí)行以下程序段:AA=12:BB=3add(AA,BB)print AA&“”& BB,您會(huì)發(fā)現(xiàn)它們的值發(fā)生了變化,因?yàn)閭鬟f值時(shí)數(shù)據(jù)是給函數(shù)的,所以函數(shù)不能修改AA和BB的數(shù)據(jù)。形象一點(diǎn):你去查分?jǐn)?shù),別人把分?jǐn)?shù)讀給你看,這相當(dāng)于把別人給你看的分?jǐn)?shù)表的值傳遞給你(這時(shí)你可以讀分?jǐn)?shù),你也可以修改分?jǐn)?shù))就是地址。這就是為什么當(dāng)你檢查分?jǐn)?shù)時(shí),你得到的是數(shù)值,而不是把你放在教育局自己的檔案里。哈哈哈,希望對(duì)你有幫助。打這么多字真累人。給分?jǐn)?shù),哈哈哈
地址對(duì)原來(lái)的屬性沒(méi)有影響,因?yàn)樵瓉?lái)的屬性只是一個(gè)地址。價(jià)值轉(zhuǎn)移根本沒(méi)有效果。如果在方法中修改了地址中的對(duì)象,則原始屬性會(huì)根據(jù)相同的地址找到對(duì)象,該地址在方法中發(fā)生了更改,然后將其提取為形式參數(shù),影響實(shí)際參數(shù)
這樣理解:
過(guò)程中的參數(shù)列表,我們稱之為formal parameter
調(diào)用過(guò)程中的參數(shù)列表,我們稱之為actual parameter
調(diào)用時(shí)需要修改參數(shù)列表,將實(shí)際參數(shù)值傳遞給formal parameters,這樣進(jìn)程就可以帶著這些數(shù)據(jù)參與計(jì)算并實(shí)現(xiàn)一些函數(shù)
然后在傳遞過(guò)程中,有兩種傳遞方式
傳遞值(ByVal)時(shí),就是先為形式參數(shù)打開一個(gè)臨時(shí)地址,將實(shí)際參數(shù)的內(nèi)容傳遞到臨時(shí)地址。這樣,經(jīng)過(guò)傳遞后,形式參數(shù)和實(shí)際參數(shù)在兩個(gè)不同的地址,即它們是獨(dú)立的
地址傳遞(byref)就是將參數(shù)的地址直接傳遞給參數(shù)。這樣,參數(shù)和參數(shù)共享同一個(gè)地址。因此,參數(shù)內(nèi)容的改變直接改變了參數(shù)的內(nèi)容
通過(guò)以上分析,您只需要記住
與其他語(yǔ)言不同,python不允許程序員在傳遞參數(shù)時(shí)選擇傳遞值或引用使用。
Python參數(shù)必須以“對(duì)象引用”的方式傳遞。
事實(shí)上,這種方法相當(dāng)于價(jià)值轉(zhuǎn)移和參考轉(zhuǎn)移的結(jié)合。如果函數(shù)接收到對(duì)變量對(duì)象(如字典或列表)的引用,它可以修改對(duì)象的原始值—相當(dāng)于通過(guò)“傳遞引用”傳遞對(duì)象。如果函數(shù)接收到對(duì)不可變對(duì)象(如數(shù)字、字符或元組)的引用,則不能直接修改原始對(duì)象,這相當(dāng)于通過(guò)“傳遞值”傳遞對(duì)象。
參數(shù)傳遞的“傳值”和“傳址”有什么區(qū)別?
參數(shù)類型已知。按值傳遞和按地址傳遞都是函數(shù)參數(shù),即將實(shí)際參數(shù)的值轉(zhuǎn)換為形式參數(shù)的方法。規(guī)則是,當(dāng)傳輸類型為type時(shí),如果參數(shù)類型為type,則通過(guò)值傳遞參數(shù)。
2如果參數(shù)類型為type*,則按地址傳遞。
3. 如果參數(shù)類型多于類型*,例如類型**、類型**,則將按地址傳遞。請(qǐng)注意,類型本身可能是指針類型。例如,如果參數(shù)本身是char*,則值將被傳輸;如果要傳輸?shù)刂?,則至少應(yīng)使用char*。