vb值傳與址傳問題,VB中關於傳值和傳位址的問題?

2025-02-05 14:35:09 字數 2933 閱讀 1589

1樓:網友

這題的關鍵在於:

public sub p1(x%, y%)和。public sub p2(x%, byval y%)的區別。第乙個過程:

public sub p1(x%, y%)中的 x%,y% 前面沒有任何修飾符,表示為址傳,這種傳遞方式可以把它想像為:x就是a,y就是b,在過程結束之後,x值是多少a就是多少,y是多少b就是多少。至於c,在call p1(a,b)這個語句已表明根本就沒有傳遞c值,故c還是原來的值,即6

第二個過程:public sub p2(x%, byval y%) 中有:x% 這是址傳,意思同上,過程結束後,x是多少a就是多少。

而byval y% 有byval修飾符,這個叫值傳,就是隻傳遞值,b不會隨著y的值變化而變化,過程結束後,無論y是多少,b還是會保持原來的值。

2樓:天1角

傳值---形式引數 只是複製乙份使用 並不存在計算機記憶體的同一位址。

傳址---也叫引用 實引數 形參和實參都是用同一記憶體地位址,改變1個其它都改變了。

傳址---從某種意義上講就是全域性變數一樣。

你既然已經有模組變數 c% 那你過程裡面為什麼還要 定義 c% 區域性變數 優先於全域性變數。

妤範圍越小變數 優先於範圍最大變數。

p1,和p2過程 區域性變數優先於模組變數,並沒有改變c的變數位址。

cimmand1 過程 由c=0修改c=6存入位址 顯示輸出當然是6了。

您這用法太混亂了,建議理解了再用,特別是全域性變數。

如果你想輸出4 6 10

dim a%, b%, c%

public sub p1(x%, y%)x = x * 2: y = y + 2: c = x + yend sub

private sub command1_click()a = 2: b = 4: c = 6

call p1(a, b)

print a; b; c

end sub

3樓:默boy汗水殤涯

這個你畫乙個三維座標就知道了。

求解 vb中 按值傳遞和按位址傳遞的區別

4樓:網友

1. 按位址傳遞。

vb預設的資料傳遞方式。

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

5樓:瀋陽_大偉

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

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

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

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

6樓:愈金蘭錢姬

本題可以這樣理解:

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

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

7樓:範桂花邗月

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

subfun1(byvalaas

integer,byvalbas

integer,c

asinteger)

中前兩個引數是傳值,最後乙個是傳的位址。

vb6.0 關於傳值傳址

8樓:哈珠東方悠馨

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

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

傳值和傳址的通俗理解:

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

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

vb6.0 關於傳值傳址

9樓:網友

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

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

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

求解 vb中 按值傳遞和按位址傳遞的區別

10樓:月之盡頭

1. 按位址傳遞。

vb預設的資料傳遞方式 簡桐。

按位址傳遞(關鍵字byref):把實參變數的記憶體位址傳遞給腔弊被調過程(如sub過程),即形參與實參使用相同的記憶體位址單元,這樣通過過程就可以改變變數本身的值 

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

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

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

VB關閉窗體問題,VB中窗體關閉事件

private sub form unload cancel as integer if msgbox 確定退出嗎?vbyesno vbno then cancel 1 end if end sub就是 整個程式退出的方法用end。如果你是mdiform 拷貝這個到你的源 中 private sub...

VB中RND函式的問題,VB中 rnd函式問題?

rnd 函式 返回一個包含隨機數值的 single。語法rnd number 可選的 number 引數是 single 或任何有效的數值表示式。返回值如果 number 的值是 rnd 生成 小於 0 每次都使用 number 作為隨機數種子得到的相同結果。大於 0 序列中的下一個隨機數。等於 0...