當前位置:編程學習大全網 - 編程語言 - VB編程填空,為什麽變量a=30,b=30,c=15。

VB編程填空,為什麽變量a=30,b=30,c=15。

因為自定義函數 fun()中的三個參數,是按照傳址規則的參數,何謂“傳址”?

其實還有傳值參數;

先看個簡單的例子來說明:

private sub command1_click()

dim a as integer,b as integer

a = 5: b = 10

print a, b '調用函數前顯示a,b的值,顯示:5 10

print fun(a, b) '調用函數並輸出結果,顯示:199

print a, b '調用函數前顯示a,b的值,顯示:100 10

end sub

private function fun ( x as integer , Byval y as integer) as integer

x = 100

y = 99

fun = x + y

end function

調用後顯示:199沒有問題吧?但是調用函數後,再次顯示會出現:100 10呢?

原因就是自定義函數fun()中,x前沒有關鍵字Byval(省略了ByRef)是傳址參數,而y是傳值參數;它們的區別,前者把外部調用它的對應變量地址傳遞給它了;後者是把數值傳遞給它了;結果就是,前者在自定義函數中對參數的改變就是對外部調用變量的改變,而後者不會改變外部調用的變量。

現在回來分析妳的代碼;

因為自定義函數 fun()中的三個參數,是按照傳址規則的參數,所以每次調用結束後,a,b,c,的值,就是函數裏邊最後x,y,z,的值。

在print fun ( a, b, c ) + fun ( a, b, c ) 語句裏調用了2次

第1次,調用前,a=5,b=10,c=15,進入函數即:x=5,y=10,z=15,

第1次,調用後,函數結束的時候;

z = x '5 外面的c也為5 (所謂傳址,既函數內變量z指向的地址就是外部變量c)

x = x + y '15 外面的a也為15

y = y + z '15 外面的b也為15

fun = x + y '30

這時,a=15,b=15,c=5

第2次,調用前,a=15,b=15,c=5,進入函數即:x=15,y=15,z=5,

第2次,調用後,函數結束的時候;

z = x '15 外面的c也為15

x = x + y '30 外面的a也為30

y = y + z '30 外面的b也為30

fun = x + y '60

所以當兩次調用後,輸出a,b,c

看到:30 30 15

雖然抽象,但是抓住關鍵,不難理解,多多體會就理解了!

  • 上一篇:瑪瑙珠子怎麽編手鏈教程
  • 下一篇:無錫機電高等職業技術學校怎麽樣
  • copyright 2024編程學習大全網