最近中文字幕完整版高清,宅男宅女精品国产av天堂,亚洲欧美日韩综合一区二区,最新色国产精品精品视频,中文字幕日韩欧美就去鲁

首頁 > 考試輔導 > 計算機考試 > 計算機等級考試 > 學習交流 > VB參數(shù)傳遞方式判別與解題應用

VB參數(shù)傳遞方式判別與解題應用

vb過程中使用的參數(shù)分為實參和形參,簡單的講,在過程定義中給定的參數(shù)是形參,而在過程調用語句中給定的參數(shù)是實參。當調用一個有參數(shù)的過程時,形參和實參逐一匹配傳遞,根據(jù)傳遞方式不同,可分為按值和按地址兩種。對參數(shù)傳遞方式的正確判別是過程學習中的一個難點,也是等級考試中的一個考點。

一、 按值與按地址方式的內涵

按值傳遞參數(shù),實質上是將實參的值復制一份給形參,因此形參獲得的是實參的副本,當過程執(zhí)行中對形參進行改變,并不會影響實參本身;按地址傳遞參數(shù),實質上是將實參變量的地址傳遞給形參,因此形參與實參將指向同一內存單元,當過程執(zhí)行中形參發(fā)生改變時,對應實參也將跟著改變。

二、 參數(shù)傳遞方式判別方法


   判斷參數(shù)傳遞方式,不能單純的看過程定義中形參前的修飾限定詞有無byval。參數(shù)傳遞到底采用何種方式,不僅取決于過程定義,還取決于過程調用,即與對應實參的具體形式也有很大關系。因此,應該從以下三個方面綜合考慮:

1. 形參是否為數(shù)組或者控件

2. 形參前是否有byval修飾

3. 對應實參是否為表達式或者值

  具體判別方法,請見如下判別流程圖。

  三、不同傳遞方式對參數(shù)類型的要求


  若參數(shù)按地址傳遞,則vb要求實參的數(shù)據(jù)類型與形參的數(shù)據(jù)類型完全一致;若參數(shù)按值傳遞,則實參數(shù)據(jù)類型不要求與形參完全一致,但是必須能夠由vb默認轉化。


四、解題應用


  (一) 以江蘇省計算機等級考試2001年春季的一道考題為例:


  在應用程序中用“private function fun(x as integer, y as single)”定義了函數(shù)fun. 調用函數(shù)fun的過程中的變量i,j均定義為 integer型,能正確引用函數(shù)fun的是____

①fun(i,j) ②call fun(i,3.65)

③fun(3.14,234) ④fun(“245”, “231.5”)

a.①③ b.②③④ c.①②③ d.①②③④

分析:


  1. 根據(jù)判別流程圖,對每個引用做如下判斷:


  對于①fun(i,j),實參i與形參x匹配,由于形參x不是數(shù)組并且無byval修飾,而實參i為變量,不是值或表達式,因此該參數(shù)將按照地址傳遞;同理,可以推斷實參j與形參y也將按照地址傳遞。根據(jù)vb要求,按照地址傳遞的實參和形參數(shù)據(jù)類型必須完全一致,而根據(jù)題意,j為integer,y為single,因此①不正確;對于②call fun(i,3.65),i與x按地址傳遞;而實參3.65為值,與形參y匹配時,將按值傳遞,因此②正確;對于③fun(3.14,234),雖然實參3.14對應的形參x為integer,實參234對應的形參y為single,但由于它們都是按照值傳遞,因此3.14將轉化為3,而234可以直接賦給y,因此③正確;對于④fun(“245”, “231.5”),由于實參“245”和“231.5”均為字符串值,因此其與對應形參x、y將按照值傳遞,而數(shù)字字符串是可以轉化為數(shù)值類型的,因此④正確。


  綜上所述,正確答案為b。


  2. 對于該題,由于要求是“能正確引用函數(shù)fun的是”,因此,③④雖帶括號,并且無call引導,但卻可以通過諸如:print fun(3.14,234)加以引用。若改為:“能正確調用函數(shù)fun的語句是”,則此時③④不可選,只能選②。


  (二) 以江蘇省計算機等級考試2002年春季的一道考題為例:

  調用由語句private sub convent(y as integer)定義的sub過程時,以下不是按值傳遞的語句____。

a.call convent((x)) b.call convent(x*1)

c.convent(x) d.convent x


  分析:


  1. 對于a、b選項,實參分別為(x)和x*1,均為表達式,因此a、b選項中的實參將按照值傳遞;對于d選項,實參x未用括號引導,此時不可加call,因此語句正確,同時,根據(jù)判別流程圖,實參x與形參y必按地址傳遞。分析至此,對于該題為單選題,已經可以斷定答案是d。


  2. 現(xiàn)在考慮c選項語句convent(x)帶括號,但卻無call引導,因此直覺上似乎不能正確執(zhí)行。但若我們在vb代碼編輯器中輸入該句,回車后,該語句自動調整為:convent (x),注意此時convent與(x)之間有一個空格,因此該句中的括號是用于x,而不是用于convent,所以盡管無call引導但其卻能夠執(zhí)行,此時實參為(x),因此參數(shù)將按值傳遞。所以對于call convent(x)和convent(x),雖然都能執(zhí)行,并非是由于convent(x)前可以省略call,而在于它們的實參分別是x和(x),其傳遞參數(shù)的方式自然就不同。


  (三) 閱讀程序寫出運行結果:


private sub form_click()

dim x as integer, y as integer, z as integer

x = 1: y = 2: z = 3

call sub1(x, y, y)

print x,y,z

end sub

private sub sub1(x as integer, y as integer, byval z as integer)

dim i as integer

x = 3 * z: y = 2 * z: z = x y

print x, y, z

end sub

分析:

  根據(jù)判別流程圖知,第一、二參數(shù)按地址傳遞,第三參數(shù)按值傳遞。因此第一、二形參與對應實參指向同一內存單元,而第三形參與對應實參值相同,但卻指向不同內存單元。因此,可以作出如下參數(shù)傳遞與過程調用示意圖。

雖然實參和形參均為x、y、z,但是請注意區(qū)分,它們具有不同的作用域。

經分析,最后答案為:

6 4 10

6 4 3

vb過程中使用的參數(shù)分為實參和形參,簡單的講,在過程定義中給定的參數(shù)是形參,而在過程調用語句中給定的參數(shù)是實參。當調用一個有參數(shù)的過程時,形參和實參逐一匹配傳遞,根據(jù)傳遞方式不同,可分為按值和按地址兩種。對參數(shù)傳遞方式的正確判別是過程學習中的一個難點,也是等級考試中的一個考點。

一、 按值與按地址方式的內涵

按值傳遞參數(shù),實質上是將實參的值復制一份給形參,因此形參獲得的是實參的副本,當過程執(zhí)行中對形參進行改變,并不會影響實參本身;按地址傳遞參數(shù),實質上是將實參變量的地址傳遞給形參,因此形參與實參將指向同一內存單元,當過程執(zhí)行中形參發(fā)生改變時,對應實參也將跟著改變。

二、 參數(shù)傳遞方式判別方法


   判斷參數(shù)傳遞方式,不能單純的看過程定義中形參前的修飾限定詞有無byval。參數(shù)傳遞到底采用何種方式,不僅取決于過程定義,還取決于過程調用,即與對應實參的具體形式也有很大關系。因此,應該從以下三個方面綜合考慮:

1. 形參是否為數(shù)組或者控件

2. 形參前是否有byval修飾

3. 對應實參是否為表達式或者值

  具體判別方法,請見如下判別流程圖。

  三、不同傳遞方式對參數(shù)類型的要求


  若參數(shù)按地址傳遞,則vb要求實參的數(shù)據(jù)類型與形參的數(shù)據(jù)類型完全一致;若參數(shù)按值傳遞,則實參數(shù)據(jù)類型不要求與形參完全一致,但是必須能夠由vb默認轉化。


四、解題應用


  (一) 以江蘇省計算機等級考試2001年春季的一道考題為例:


  在應用程序中用“private function fun(x as integer, y as single)”定義了函數(shù)fun. 調用函數(shù)fun的過程中的變量i,j均定義為 integer型,能正確引用函數(shù)fun的是____

①fun(i,j) ②call fun(i,3.65)

③fun(3.14,234) ④fun(“245”, “231.5”)

a.①③ b.②③④ c.①②③ d.①②③④