求解vB中按值傳遞和按地址傳遞的區別

2022-01-19 05:44:04 字數 5209 閱讀 9197

1樓:匿名使用者

1. 按地址傳遞

vb預設的資料傳遞方式

實參必須是變數,不能採用常量或表示式   按值傳遞(關鍵字byval):通過常量傳遞實際引數,即傳遞引數值而不是傳遞它的地址   因為通用過程不能訪問實參的記憶體地址,因而在通用過程中對形參的任何操作都不會影響實參

2樓:瀋陽_大偉

按照值傳遞,就是把變數的真正數值傳遞給其它變數或函式按照地址傳遞,就是把這個值的記憶體地址傳遞給變數或函式例如一個字元變數 a 中儲存的值是字串 12345,在記憶體中儲存的首地址是 58h

按照值傳遞,就是把字串 12345 傳遞出去按照地址傳遞,就是把這個字串的地址 58h傳遞出去如果是按照地址傳遞,那麼儲存值的時候就要規定儲存的地址,否則你就不知道存在**了

如果資料很大,按照地址傳遞會讓程式減輕些負擔,就是速度能快一些或者是使用組合語言進行編寫,則需要使用地址傳遞資料

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. 函式過程 呼叫 按值傳遞 按地址傳遞 20

5樓:vi六

變數前面加byval是案值,byref是按地址,不加字首預設是按地址

6樓:匿名使用者

執行結果

9 6 15

18 30 30

第二次呼叫時,實參y和形參y、z共用一個地址,呼叫過程中他們的值無論哪個變化,其它幾個都得變

在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樓:

傳值的話,在子程式中值改變不會傳遞到主程式。

傳址的話,在子程式中值改變,主程式中也會變。

例子: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中按值傳遞和引用傳遞區別最好是程式例項說明下

9樓:吹花

'傳值函式示例,倆形參byval

function test1(byval a as long, byval b as long) as long

a = a + b

test1 = a

end function

'傳址函式示例,第一個形參byref

function test2(byref a as long, byval b as long) as long

a = a + b

test2 = a

end function

'測試private sub form_click()

dim a as long

c = 5

print test1(c, 3), c '結果為8 5

print test2(c, 3), c '結果為8 8

end sub

傳值和傳址是函式引數傳遞的兩種方式;

1、傳值,顧名思義是把引數的值傳遞給函式供呼叫,只當借用,無權改變引數原來的值,呼叫結束後引數值不變;

2、傳址,即是把引數變數的地址傳給函式,呼叫過程中如果函式該形參的值有所變動,勢必引起實參(被傳的變數)值的變動,因為它們共享一片記憶體地址。

函式示例一,倆引數傳值呼叫,c的值不變為5;

函式示例二,第一個形參傳址呼叫,形參a的值被改變,所以實參c亦改變,結果為8。

vb中按值傳遞和按址傳遞有什麼區別,最好能舉例說明

10樓:匿名使用者

按址傳遞到函式的引數,在函式裡面改變該引數後,對應的變數也被改變。

按值傳遞 的不會改變。

private sub command1_click()dim a as string

a = "呼叫前"

call 按址傳遞(a)

msgbox a

end sub

private sub command2_click()dim a as string

a = "呼叫前"

call 按值傳遞(a)

msgbox a

end sub

function 按址傳遞(byref x as string)x = "按址傳遞"

end function

function 按值傳遞(byval x as string)x = "按值傳遞"

end function

值傳遞和引用傳遞的區別是什麼?

11樓:丿隨風丶自在非

在不同的程式語言中可能會大同小異吧

在c#中,這些都是針對方法而言的。

值傳遞指的是方法被呼叫時傳遞進來的引數是一個副本(拷貝),而不是傳遞進來引數本身。換句話說對值傳遞引數的修改不會影響到呼叫方傳遞的引數物件;

而引用傳遞指的是方法被呼叫時傳遞進來的引數是一個引用,換句話說傳遞進來的引數是指向呼叫方傳遞的引數本身的。對引用傳遞的引數的修改會影響到呼叫方傳遞的引數物件。

12樓:柴達納絲微

傳值會為實參在棧中做一副本,函式只能改變棧中副本的值,而不會改變實參的值。

傳引用是把實參的指標傳遞給函式,不用做副本,對引用的修改就是對原值進行修改.所以效率較高.

j**ascript 是按值傳遞還是按引用傳遞的

13樓:北京巴卜技術****

js是傳值的,物件型別的值其實是個記憶體地址,比如你家的地址,你告訴人家你家地址是xx路xx號,別人就根據這個地址找到你家的位置,所以說xx路xx號就是一個物件型別的值,不管這個值複製多少遍,他所指向的都是同一個地方,也就都會找到那個地方的唯一一個物件這就是物件型別的值是地址而不是真正物件本身

14樓:育知同創教育

值傳遞僅僅傳遞的是值

引用傳遞,傳遞的是記憶體地址,修改後會改變記憶體地址對應儲存的值。

用陣列來舉例就最清楚了,例如我們定義一個陣列a=;

那麼a[0]=1,a[1]=2。

如果我們把陣列a裡的元素值作為引數傳遞,實際上只是進行了值傳遞,對陣列本身沒有影響

如果我們把 陣列a的指標作為引數傳遞,那麼假如處理的函式就可以直接修改陣列a裡的值。

**例項:(只是寫個大概的邏輯,語法可能有錯誤)main()

;test(a);

printf(a[0]); //此處列印的值是3, 這就是引用傳遞。

}public void test(int b)

詳細解釋vb的按值傳遞及按地址傳遞,儘量講的通俗易懂點!

15樓:阿瑟

function 函式名(byval 變數名 as string)'按值傳遞 end function 比方說你想向我錯書,我直接把書給你,就是按值傳遞,書就是值,最終結果是你拿到了書 function 函式名(bydef 變數名 as string)'按地址傳遞 end function 比方說你想向我錯書,我說書在書包裡,就是地址傳遞,書包就是地址,我並沒有把書給你,而是告訴你書在**,最終結果是你到我書包裡拿到了書 追問: 愕!按地址傳遞應該是byref吧!!!

最好講的仔細一點,再者我會用但不是很理解而已!

求解按規律填數 8,7,13,38括號中應填什麼

8,7,13,38,151 754 規律如下 8 1 1 7 7 2 1 13 13 3 1 38 38 4 1 151 151 5 1 754 8,7,13,38,151 754 自認為規律是醬紫 8 1 1 7 7 2 1 13 13 3 1 38 38 4 1 151 151 5 1 754 ...

VB中如何將檔案中的多行內容按行顯示在文字框中 注意,是多行內容的檔案,不是要文字框顯示多行內容

你要列印到文字框中?不知道你說的 prnt x,y 是不是你定義的一個函式,vb裡應該沒有這個方法的,如果你要按自己的格式列印到文字框 text1中,可按下面 列印的方法做你的東西。private sub command1 click text1.text 我 把text1的屬性設定為多行 mult...

excel中按enter鍵和shift ctrl enter

使用組合鍵 ctrl shift enter 的意義在於下達多項運算指令,以下兩種情況必須使用陣列公式才能得到正確結果。1 公式的計算過程中存在多項運算,且函式自身不支援常量陣列的多項運算。2 公式計算結果為陣列,需要使用多個單元格儲存計算產生的多個結果。在條件1中,是否使用組合鍵在於公式最後計算的...