VB形參,實參問題,vb中形參和實參的區別

時間 2022-02-07 03:40:06

1樓:匿名使用者

這個不是什麼形參和實參的區別。是引數傳遞型別的問題。你的fun函式中,兩個形參x,y都是傳址傳遞變數。

那麼fun(a,a),這裡的a就是實參,這裡a傳遞給兩個傳址傳遞引數x和y,那麼x和y都會直接訪問並修改a的記憶體地址的數值。這個就是傳址傳遞引數的最大作用。

那麼a記憶體地址的值改變了,a也就改變了。

需要注意的是,兩段程式裡面的k兩者之間沒有任何關係,分屬於兩個程式的區域性變數。

那麼再回到你的函式呼叫:k= fun(a,a) + fun(a,a)

第一個fun(a,a),首先進行x = x + y的運算,因為x,y都直接訪問了a的地址,所以x,y的值期初都是1。然後經過x = x + y 的運算,也就是x = 1 + 1,那麼這個時候x =2,而x是傳址傳遞,他直接修改了a地址的值,也就是a也變成了2,而y也訪問的是a地址,所以這個時候a,x,y的值都是2,實際上他們都是a地址的值。

那麼再執行y= y+k,這裡的k就是一個普通區域性變數,他前面沒有任何賦值,所以k就預設為0,所以y= 2 + 0,所以y還是2,也就是a,x,y的值沒有任何變化。

而fun = x + y = 2 + 2 = 4。

此時print fun;x;y 就是 4,2,2

而第二個fun(a,a),此時a的值已經變成了2,那麼x = x + y = 2 + 2 = 4 ,於是a,x,y都變成了4,後來fun = 4 + 4 = 8,於是print fun;x;y 就是 8,4,4

而k = 4 + 8 = 12

所以,最終結果就是:

4,2,2

8,4,412

vb中形參和實參的區別

2樓:匿名使用者

在函式或過程中定義的引數叫形參,呼叫函式時傳入的引數叫實參。

在vb中,傳遞變數就是傳地址,除非指定傳值,即byval

過程或函式中的形式引數沒有特別指明是傳址方式還是傳值方式,隱含的是傳址。實際呼叫時,還要根據實參的形式,才能確定是傳值還是傳址的資料傳送方式。若實參為常量或表示式,則為傳值的傳遞方式;若實參是變數名或陣列名,則為傳址的傳遞方式。

3樓:匿名使用者

1、形參和實參介紹:

形參-也就是"形式引數"。是在定義函式名和函式體的時候使用的引數,目的是用來接收呼叫該函式時傳如的引數。

實參-全稱為"實際引數"。是在呼叫時傳遞個該函式的引數。

形參和實參的型別必須要一致,或者要符合隱含轉換規則, 當形參和實參不是指標型別時,在該函式執行時,形參和實參是不同的變數,他們在記憶體中位於不同的位置,形參將實參的內容複製一份,在該函式執行結束的時候形參被釋放, 而實參內容不會改變。

2、例子說明;

function get_num(num as integer) as integer

get_num = num + 1

end function

上面函式將傳入num值加1後返回,其中get_num是函式的名字,num就是形參,此時它不代表任何值,只是個形式。

private sub command1_click()

dim a as integer

a=2msgbox get_num(a)

end sub

呼叫get_num函式時,用變數a作為實參,a的值是2,呼叫完後返回結果是11,但是a的值並無變化仍為2。

4樓:明槐宸

在函式過程定義的引數叫形參,呼叫函式時傳入的引數叫實參。

visual basic是一種由 microsoft 公司開發的結構化的、模組化的、物件導向的、包含協助開發環境的事件驅動為機制的視覺化程式設計語言。從任何標準來說,vb都是世界上使用人數最多的語言——不管是盛讚vb的開發者還是抱怨vb的開發者的數量。它源自於basic程式語言。

vb擁有圖形使用者介面(gui)和快速應用程式開發(rad)系統,可以輕易的使用dao、rdo、ado連線資料庫,或者輕鬆的建立activex控制元件。程式設計師可以輕鬆的使用vb提供的元件快速建立一個應用程式。

vb中形參和實參的區別是什麼?

5樓:宰熹旗攸

形參是編寫函式(子程式)時定義的引數,實參實呼叫這個函式(子程式)是傳遞給函式(子程式)的引數。

如:function a(c as single) 中的c就是形參。

呼叫時:b=a(10),或者b=a(s),其中的10、s就是實參。

6樓:匿名使用者

1、形參和實參介紹:

形參-也就是"形式引數"。是在定義函式名和函式體的時候使用的引數,目的是用來接收呼叫該函式時傳如的引數。

實參-全稱為"實際引數"。是在呼叫時傳遞個該函式的引數。

形參和實參的型別必須要一致,或者要符合隱含轉換規則, 當形參和實參不是指標型別時,在該函式執行時,形參和實參是不同的變數,他們在記憶體中位於不同的位置,形參將實參的內容複製一份,在該函式執行結束的時候形參被釋放, 而實參內容不會改變。

2、例子說明;

function get_num(num as integer) as integer

get_num = num + 1

end function

上面函式將傳入num值加1後返回,其中get_num是函式的名字,num就是形參,此時它不代表任何值,只是個形式。

private sub command1_click()

dim a as integer

a=2msgbox get_num(a)

end sub

呼叫get_num函式時,用變數a作為實參,a的值是2,呼叫完後返回結果是11,但是a的值並無變化仍為2。

vb 形參和實參分別是什麼?

7樓:一碑電影

開參是定義函式時的引數,如:

private function aaa(a as string,b as integer) as boolean

end function

這裡的a和b就是形參。

而呼叫函式時傳入的引數就叫實參。

如call aaa("aaa",10)

這裡就是實參

8樓:

行參是編寫函式(子程式)時定義的引數,實參實呼叫這個函式(子程式)是傳遞給函式(子程式)的引數。

如:function a(c as single) 中的c就是形參。

呼叫時:b=a(10),或者b=a(s),其中的10、s就是實參。

vb實參形參

9樓:匿名使用者

command1裡 實參

proc1 形參

傳值和傳地址過程:

x=3 * z 'x=9 因為x,y都指向x的 地址,x=y=9,所以實參x=9

y=2*z 'y=9 所以 形參y=x=6 指向 實參command1中x=6

z=6+6』z指向command1中z

所以 最後 只 改變了 x,和z的 值 x=6,y=2,z=12print x,x,z 列印實參x兩次 所以6,6,12下一次 呼叫相同

10樓:匿名使用者

你寫的**好像不是形參和實參的問題,應該屬於引數傳遞的問題。關於實參和形參,你可以這樣想形參就是假象的東西,只是一個替代品。程式的作用是處理傳入的資料,但是你寫**的時候資料還沒傳入,也就是你假設的情況根本還沒有發生。

就是事件過程還沒有觸發。那你怎麼辦,就假定一個名字,它就是將來要出入的資料,然後對他進行操作。相當於告訴電腦,將來程式在出入實參時就這麼做。

不知道你是不是這個意思,我估計是我理解錯誤。對於一個程式設計師這一點根本不是問題,如果你想問的是引數的傳送方式,可以到網上搜,傳值有兩種方式(vb),傳值和傳地址。或者你補充一下問題,我再來回答。

vb程式呼叫中的形參和實參問題

11樓:

在討論形參和實參之前,先了解下for的機制。

以下句為例,

for i = min to max step t'...

next i

對於迴圈變數i,每一次next i後,先執行一次i=i+t,接著判斷i>=max,若為真則繼續執行迴圈體,否則跳出。

好了,接下來說形參、實參的問題。

在sub suba(k,s) 過程,沒有byval關鍵字,則預設為byref,即以傳址的方式執行過程(過程中k和s值的改變會影響到窗體點選事件中的k和s的值)。

for k=1 to 2

call suba(k,s)

s=s+k

next k

迴圈開始:k=1,s=0

執行過程:k=1*1+1=2,s=6

退出過程:k=2,s=6+2=8

next k:k=2+1=3,s=8

判斷:k=3>2,退出迴圈。

於是,最後k=3,s=8

過程中的k和s為形參,窗體點選事件中的k和s為實參。

以byref(傳址)方式執行過程,形參的改變即為實參的改變。

12樓:匿名使用者

1、suba(k,s)中的k,s是形參;

2、call suba(k,s) 時的引數k,s是實參1、2中的k,s意義是不一樣的。

3、現在我們看看執行過程

當k=1時,call suba(1,s)返回s=6,s=s+k後 s=7

當k=2時,call suba(2,s)返回s=6,s=s+k後 s=8

13樓:

suba 被呼叫了一次,

預設是地址傳遞,所以值發生改變。

第一次k進去是1然後k程式設計了2,s變成了6結束呼叫,這個時候事件過程裡面的s=s+k

s就等於8

接著執行next k 這個時候k變成了3

不迴圈。然後結束執行。

14樓:

private sub form_click()for k=1 to 2 進入迴圈

call suba(k,s) 將k,s的值進入過程s=s+k s=8

next k k=2+1=3 跳出迴圈end sub

sub suba(k,s) k進來時為1k=k*k+1 k=2

s=6 s=6 返回事件end sub

k=3 s=8

vb 在引數傳遞過程中,實參和形參的個數必須相等這句話對嗎

15樓:匿名使用者

1.「vb 在引數傳遞過程中,實參和形參的個數必須相等」這句話應該是錯的吧。

比如我定義一個函式

function fun(a as string, optional b as integer = 0)

這個時候我呼叫fun函式時,可以這樣寫fun(」2「)就可以呼叫了,因為第二個引數可以不用寫,在定義函式時賦了預設值,所以這個時候形參是兩個,而實參只有一個。(下面有**執行成功。)

2.」相應資料型別可以不相符這句是對的。實際除錯可行。

比如形參定義為字串型別,但呼叫函式時實參是整型,呼叫可正常執行,不會出錯。

function fun(a as string, optional b as integer = 3)

msgbox a & b

end function

sub main()

dim s as integer

s = 2

fun (s)      '這個時候雖然s是整型,而fun裡引數a是字串型別,但是實際呼叫卻沒有出問題。

end sub

形參和實參的區別是什麼,c語言中形參和實參是什麼意思?有什麼區別?

淳于長順印黛 實參是用來填充形參的。當函式被呼叫時,形參列在函式名後面的括號裡。執行函式呼叫時,實參被傳遞給形參。1 形參變數只有在被呼叫時才分配記憶體單元,在呼叫結束時,即刻釋放所分配的記憶體單元。因此,形參只在函式內部有效。函式呼叫結束返回主呼叫函式後則不能再使用該形參變數。2 實參可以是常量 ...

php實參,形參可以嗎,php 實參2個,形參1個 可以嗎

function aa aaa,bbb aa aaa,3 aa aaa 以上兩種呼叫方式都正確 可以舉個例子,模仿substr函式 function sub str str,start,length string substr str,start,length return string 呼叫 st...

為什麼指標可以改變實參的值,形參不能改變實參,為什麼在用指標傳遞數值的時候又可以改變呢?

通俗講指標作形參,形參裡儲存的是地址的值,這個值與實參的某個變數的地址是一樣的,所以當改變形參所指向的地址裡存的資料,其實改變的就是實參那個變數的值。而普通變數作形參,與實參中的變數其實是使用不同的儲存空間,所以當形參的值發生改變時,實參所在儲存空間的值並沒有發生改變。 應該是指標可以改變實參所指變...