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