vb6 0關於傳值傳址,在VB中傳值呼叫和傳址呼叫的區別?????

2022-02-04 23:55:24 字數 5607 閱讀 3169

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...