1樓:網海1書生
swap1是傳值,所以它內部對x和y做任何修改都不會影響到a和b的值,所以swap1執行完畢後a和b的值是不變的;
而swap2是傳址,所以x與a、y與b所指向的是同一個記憶體地址,換句話說就是它們實際上是同一個變數,所以函式內部對x和y所做的任何修改都會直接反映到a和b,因此swap2執行完畢後a和b的值就互相換過來了。
傳值和傳址的通俗理解:
1、傳值是把引數的值傳遞給函式,也就是說,你把銀行賬戶的餘額告訴別人,別人是不會把你的錢取走的,他只不過是知道你有多少錢而已;
2、而傳址則是把引數的記憶體地址傳遞給函式,也就相當於你把銀行賬戶的帳號密碼告訴別人了,這個會有什麼結果就自己去想了。
2樓:匿名使用者
public sub swap1(byval x as integer, byval y as integer) '傳值
傳值,形參的改變不會影響到實參,你可以認為是實參複製了一份作為形參public sub swap2(x as integer, y as integer) '傳址
傳址,或稱為傳引用,是將實參本身作為形參傳入,形參的改變實際就是實參的改變
vb引數引數傳遞中,傳值與傳址的區別
3樓:匿名使用者
定義的區別:byval和byref
private sub 傳值(byval a as integer)
a=5end sub
private sub 傳址(byref a as integer)
a=5end sub
呼叫上的區別:
mya = 6
call 傳值(mya) '呼叫傳值print mya '結果不變為6call 傳址(mya) '呼叫傳址print mya '結果變為5簡單的理解:傳值情況,外部變數與自定義過程內的變數是兩個傳址情況,外部變數與自定義過程內的變數就是同一個
4樓:**大師兄
傳址引數在子過程裡面的改變會影響過程外的對應引數,傳值則不會,vb裡面預設是傳址也就是byref的
比如:sub f(byref a as integer)a=1end sub
主函式中:f i,此時i=1
而sub f(byval a as integer)a=1end sub
主函式中:f i,此時i的值沒變
在vb中傳值呼叫和傳址呼叫的區別?????
5樓:
傳值byval是將數值傳給形參
我以一個例子講解
function add(byval a as integer,byval b as integer)
dim c as integer
a=a+1
b=b+1
c=a+b
add=c
end function
上面的是傳值,也就是當呼叫的時候,例如
add(a,b)
這裡實際上是等同於
add(a值,b值)
如:aa=12:bb=3
呼叫add(aa,bb)時,系統會把數值12和3傳給函式「add」
結果是aa,bb原值未變
但是傳址不一樣
同樣的功能,我把它改成傳址時的模式:
function add(byref a as integer,byref b as integer)
dim c as integer
a=a+1
b=b+1
c=a+b
add=c
end function
這個時候,如果執行下面的程式段:
aa=12:bb=3
add(aa,bb)
print aa & " " & bb
你會發現他們的值變了
因為傳值的時候是將資料給函式,這樣函式無法對aa,bb這種資料進行修改
形象一點:你去查分,別人把分數讀出來給你聽,就相當於傳值
別人把分數表給你看,(這個時候你可以讀取分數,也可以改分數)就是傳址。這就是為什麼查分的時候都是給你的數值,而不是把你放進教育局自己查檔案,嘿嘿
希望對你有幫助
打這麼多字好累,給分吧,嘿嘿
6樓:
傳值的話,在子程式中值改變不會傳遞到主程式。
傳址的話,在子程式中值改變,主程式中也會變。
例子:a=1
b=2call fun(a,b)
sub fun(byref a as integer,byval b as integer)
a=3b=4
end sub
主程式執行完call fun(a,b)後,a=3, b=2
vb中傳址與傳值有什麼區別?
7樓:
傳值byval是將數值傳給形參
我以一個例子講解
function add(byval a as integer,byval b as integer)
dim c as integer
a=a+1
b=b+1
c=a+b
add=c
end function
上面的是傳值,也就是當呼叫的時候,例如
add(a,b)
這裡實際上是等同於
add(a值,b值)
如:aa=12:bb=3
呼叫add(aa,bb)時,系統會把數值12和3傳給函式「add」
結果是aa,bb原值未變
但是傳址不一樣
同樣的功能,我把它改成傳址時的模式:
function add(byref a as integer,byref b as integer)
dim c as integer
a=a+1
b=b+1
c=a+b
add=c
end function
這個時候,如果執行下面的程式段:
aa=12:bb=3
add(aa,bb)
print aa & " " & bb
你會發現他們的值變了
因為傳值的時候是將資料給函式,這樣函式無法對aa,bb這種資料進行修改
形象一點:你去查分,別人把分數讀出來給你聽,就相當於傳值
別人把分數表給你看,(這個時候你可以讀取分數,也可以改分數)就是傳址。這就是為什麼查分的時候都是給你的數值,而不是把你放進教育局自己查檔案,嘿嘿
希望對你有幫助
打這麼多字好累,給分吧,嘿嘿
8樓:匿名使用者
給你打個比喻:
我有一個抽屜,抽屜裡有一本書,你向我要那本書。
傳值就是我把那本書影印一份,把影印件給你,原件我留著再放回抽屜裡傳址就是我把抽屜的鑰匙給你,你自已去拿東西,你可以在抽屜裡任意取放,換其它東西放進去也可以
9樓:匿名使用者
'傳值就相當於把要傳給函式的數值複製一份後傳給了他'函式對這個數值進行修改後,原數值不變
'傳址就相當於把要傳給函式的數值的地址傳給了他'函式對這個數值進行修改後,原數值改變
'具體的看下面的例子
'新建窗體,新增兩個命令按鈕控制元件,複製以下**private sub form_load()command1.caption = "傳值測試"
command2.caption = "傳址測試"
end sub
private sub command1_click()dim i as integer
傳值 i
msgbox "傳值後結果為 : " & iend sub
private sub command2_click()dim i as integer
傳址 i
msgbox "傳址後結果為 : " & iend sub
private sub 傳值(byval i as integer)i = 50
end sub
private sub 傳址(byref i as integer)i = 50
end sub
'望採納。。。
10樓:匿名使用者
很大。傳值傳址可能改變當前的值。
vb傳值和傳址的區別
11樓:由芬菲
傳址就是把引數的地址傳過去,這樣在子程式中改變引數就會導致實際引數發生變化;而傳值則是把實際引數拷貝一個副本傳到過程裡,這樣在過程中更改此引數不會對實際引數發生影響.
12樓:房恩巨集
簡單點說:
傳值:就是把變數的一個複本傳到函式裡。
傳址:就是把變數的地址傳到函式裡。
給你個例子:
private sub form_load()dim x as integer: x = 10dim y as string: y = "hello"
haha x, y
debug.print x & vbcrlf & yend sub
sub haha(x as integer, byval y as string)
x = x + 1
y = y & " world"
end sub
13樓:圖杭科技
vb傳值是複製資料值再用和傳址時直接用資料。
14樓:匿名使用者
sub fun (byval a as integer)debug.print a
a=1end sub
sub fun2(byref a as integer)debug.print a
a=1end sub
private sub command1_clickdim i as integer
i=0fun i
debug.print i
i=0fun2 i
debug.print i
end sub
15樓:鹿同泰麗
值傳遞:是把實參的值賦給形參。形參的變化不會影響實參,資料傳遞是單向的。
地址傳遞:是把實參的地址傳遞給形參,形參變化實參也跟著變化,資料傳遞是雙向的。
vb中傳值和傳地址有什麼區別
16樓:
傳值:是單向的。是把實參的值傳遞給形參。
傳址:是雙向的。呼叫子程式時,實參把值傳遞給形參。
退出子程式返回主程式時,形參把值又帶給實參。也可以這樣解釋:是把實參的地址傳遞給形參,當形參變化時,實參的值當然跟著變化。
因為這兩個變數到一個地址取值。
17樓:匿名使用者
傳值: 只是獲得變數的值, 和原變數沒有關聯,可以被分別修改
傳址:這幾個變數指向同一地址, 修改該任何一個內容, 另外幾個的值也會變化.
18樓:匿名使用者
傳值就是把引數copy一份。隨便你把引數怎麼弄不會影響原來的值。
傳地址就是用原件。你把引數弄成方的,原件也成方的;你把引數弄成扁的,原件也成了扁的。
有關VB的知識,關於VB6 0 基礎知識
vb與資料庫的連線操作,sql,adodb等。熟悉學生管理系統資料庫2.vb一些常用的控制元件,控制元件事件 3.資料匯出,如匯出到excel 4.與vb相比,對其他如vc,dephi,在做學生管理系統所擁有的優劣 5.學生管理系統功能流程要熟悉,要熟悉,特別是資料流程 關於vb6.0 基礎知識 首...
VB60程式設計有何特點,簡述VB60的主要特點
物件導向,視覺化強,易學,易懂,有時只要操作物件或控制元件就能完成複雜的程式設計的,但是vb6.0不適合進行遊戲,病毒,系統等程式設計 什麼都能行 什麼都不精 不是我說的 是軟體界的評價 簡述vb6.0的主要特點.1 vb的中心思想就是要便於程式設計師使用,無論是新手或者專家。vb使用了可以簡單建立...
vb6 0中MessageBox怎麼用
很簡單比如 private sub command1 click if text1.text 20100344 thenmsgbox 登陸成功 shell c documents and settings administrator 桌面 登入系統元件 bin bg1.exe endelse msg...