VB傳值的問題,VB中關於傳值和傳地址的問題?

2023-04-18 09:25:07 字數 2869 閱讀 8682

1樓:匿名使用者

上半部分和問題都不是一個型別的~

上半部分是傳值和傳址的問題。

加上byval是傳值:private function fun (byval x as integer,byval y as single),執行過程中不會改變原來的引數值,傳遞的只是一個備份。比如。

x=3,y=4

fun(x,y)

然後執行時候比如有:i=i+1:j=j+1

這時x、y的值不變。

不加byval,則x、y的值改變。

和賦不賦值沒關係~~~

比如你要傳a到functions裡面,那a就是實參;傳b到function裡面,b就是實參。

寫在開頭的private function fun (byval x as integer,byval y as single),xy是形參。

private function fun (byval x as integer,byval y as single)傳值,不影響ab

private function fun ( x as integer, y as single),傳址,影響。

2樓:匿名使用者

按值傳遞。答案是a

好象少了個,

3樓:匿名使用者

選a啦 不註明byval還是byref是預設按址的。

4樓:

選會出現「缺少"="的錯誤,因為fun是function過程,會有返回值。

c也是同a一樣的問題。

d沒有寫過程名,只是一個參數列。

vb中關於傳值和傳地址的問題?

5樓:愈金蘭錢姬

本題可以這樣理解:

a和b是傳值,也就是把x和y的值分別複製到a和b中,然後進行計算;c是傳地址,也就是把z命名一個別稱叫c,對c的任何改變都會體現到z中,就像一個人有學名有小名,但都是指同一個人。

因此,z=c=a+b=5+7=12

6樓:範桂花邗月

vb的過程預設是傳地址的,即byref,而byval定義的是是傳值方式。

subfun1(byvalaas

integer,byvalbas

integer,c

asinteger)

中前兩個引數是傳值,最後一個是傳的地址。

vb 引數傳遞問題 20

7樓:匿名使用者

給你解釋下址傳遞和值傳遞。

就相當於一個人有兩個名字(比如這人叫"a","b"),那麼我叫a和叫b的結果都是一個樣也就是我叫的都是同一個人,只是我的叫法不一樣了,那麼假如我說原來a有1個蘋果,我給了b2個蘋果,那麼結果問a現在有幾個蘋果。因為a和b是同一個人,我給a和給b都是達到了同樣的目的,那麼答案肯定是3個當然結論就是"只要其中一個有了變化,那麼另一個也隨之變化。

數值傳遞:數值傳遞則沒有這樣共用一個記憶體地址。他只是把形參的資料複製給實參,他們分別用了兩個地址存放資料。同樣用a和b來舉例。

a有1個蘋果,現在我讓b等於a(注意我是複製,而不是說現在b也是a),然後我在給b 2個蘋果,那麼現在a還是有1個蘋果,而b有3個。因為我給的是不同的兩個人所以後面的人和前面的互不影響。

再來看你的這題。

先說明因為你這個程式裡的xyz沒有定義為過程級以上的變數,所以兩個過程中的xyz若不經過傳遞是不會當作一個的,他們互相不干涉。為方便理解行參一律用了x1,y1,z1 實參一律用 x2,y2,z2.

根據辨別流程圖知道x y為按地址傳遞,z為按值傳遞。

call sub1(x, y, y) 呼叫了sub1過程x1=x2=1,y1=y2=2,z2=y1=2 前面x1為形參,x2為實參,前面y1為形參,y2為實參。

因為過程中的x2y2是地址傳遞,也就是說他和形參中的xy相當於同一個人2個名字。過程中的z2是數值傳遞,只是把行慘y1的資料複製給實參z2. 也就是說x1y1改變他會導致形參x1y1變化,而實參z2的改變不會引起形參y1變化。

那麼過程中:x = 3 * z: y = 2 * z: z = x + y

就是 x=3*2,y=2*2,z=x+y print 為 x=6,y=4,z=10

(注意此時因為實參xy為6和4,所以退出過程後x和y仍然是x=6,y=4)

退出過程後的 print x,y,z

因為z在程式執行過程中始終沒有用到過,sub1過程裡的z的變化不會對原來的z=3產生改變,也就是仍然為z=3

vb6.0 關於傳值傳址

8樓:網海1書生

swap1是傳值,所以它內部對x和y做任何修改都不會影響到a和b的值,所以swap1執行完畢後a和b的值是不變的;

而swap2是傳址,所以x與a、y與b所指向的是同一個記憶體地址,換句話說就是它們實際上是同一個變數,所以函式內部對x和y所做的任何修改都會直接反映到a和b,因此swap2執行完畢後a和b的值就互相換過來了。

傳值和傳址的通俗理解:

1、傳值是把引數的值傳遞給函式,也就是說,你把銀行賬戶的餘額告訴別人,別人是不會把你的錢取走的,他只不過是知道你有多少錢而已;

2、而傳址則是把引數的記憶體地址傳遞給函式,也就相當於你把銀行賬戶的帳號密碼告訴別人了,這個會有什麼結果就自己去想了。

9樓:匿名使用者

public sub swap1(byval x as integer, byval y as integer) '傳值。

傳值,形參的改變不會影響到實參,你可以認為是實參複製了一份作為形參public sub swap2(x as integer, y as integer) '傳址。

傳址,或稱為傳引用,是將實參本身作為形參傳入,形參的改變實際就是實參的改變。

關於VB的傳值與傳地址的一道考題

這很簡單,首先我們可以看到,過程p2定義的所有引數傳遞方式都為傳值,因為每個引數前面都使用了byval關鍵字。所以過程p2的執行與否均不會影響到變數x和y的值,因此我們可以將過程p2視為不存在。接下來我們可以看到,過程p1定義的所有引數和過程p3定義的a引數均為傳址方式,這兩個過程的執行均可能會對變...

請教在vb中如何判斷null值,vb上如何判斷空值

哈哈抄,給你說啊vb裡的東西有點襲奇怪,如果它是null的,那麼你直接用 就可以判斷了也就是說你可以這樣寫 if sss then end if 不信你可以試 注意,如果sss的型別是數值型別的,就是等於0而不是null vb 裡不象vc有null 這個值但是他有 vbnullstring 一樣可以...

C 怎麼2個窗體傳值問題,C 窗體傳值

private void button2 click object sender,eventargs e public partial class form2 formprivate string nameone public string nameonesetprivate string name...