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...
為什麼指標可以改變實參的值,形參不能改變實參,為什麼在用指標傳遞數值的時候又可以改變呢?
通俗講指標作形參,形參裡儲存的是地址的值,這個值與實參的某個變數的地址是一樣的,所以當改變形參所指向的地址裡存的資料,其實改變的就是實參那個變數的值。而普通變數作形參,與實參中的變數其實是使用不同的儲存空間,所以當形參的值發生改變時,實參所在儲存空間的值並沒有發生改變。 應該是指標可以改變實參所指變...