參數(shù)傳遞方式與解題應用_第1頁
參數(shù)傳遞方式與解題應用_第2頁
參數(shù)傳遞方式與解題應用_第3頁
參數(shù)傳遞方式與解題應用_第4頁
全文預覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、VB過程中使用的參數(shù)分為實參和形參,簡單的講,在過程定義中給定的參數(shù)是形參,而在過程調(diào)用語句中給定的參數(shù)是實參。當調(diào)用一個有參數(shù)的過程時,形參和實參逐一匹配傳遞,根據(jù)傳遞方式不同,可分為按值和按地址兩種。對參數(shù)傳遞方式的正確判別是過程學習中的一個難點,也是等級考試中的一個考點。一、            按值與按地址方式的內(nèi)涵按值傳遞參數(shù),實質(zhì)上是將實參的值復制一份給形參,因此形參獲得的是實參的副本,當過程執(zhí)行中對形參進行改變,并不會影響實參本身;按地址傳遞參數(shù),實質(zhì)上是將實參變量的地

2、址傳遞給形參,因此形參與實參將指向同一內(nèi)存單元,當過程執(zhí)行中形參發(fā)生改變時,對應實參也將跟著改變。二、            參數(shù)傳遞方式判別方法判斷參數(shù)傳遞方式,不能單純的看過程定義中形參前的修飾限定詞有無ByVal。參數(shù)傳遞到底采用何種方式,不僅取決于過程定義,還取決于過程調(diào)用,即與對應實參的具體形式也有很大關(guān)系。因此,應該從以下三個方面綜合考慮:1.       形參是否為數(shù)組或者控件2.  

3、0;    形參前是否有ByVal修飾3.       對應實參是否為表達式或者值具體判別方法,請見如下判別流程圖。三、不同傳遞方式對參數(shù)類型的要求若參數(shù)按地址傳遞,則VB要求實參的數(shù)據(jù)類型與形參的數(shù)據(jù)類型完全一致;若參數(shù)按值傳遞,則實參數(shù)據(jù)類型不要求與形參完全一致,但是必須能夠由VB默認轉(zhuǎn)化。四、解題應用(一)  以江蘇省計算機等級考試2001年春季的一道考題為例:在應用程序中用“Private Function Fun(X As Integer, Y As Single)”定義了函數(shù)Fun.

4、 調(diào)用函數(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

5、為Integer,Y為Single,因此不正確;對于Call Fun(I,3.65),I與X按地址傳遞;而實參為值,與形參Y匹配時,將按值傳遞,因此正確;對于Fun(3.14,234),雖然實參對應的形參X為Integer,實參234對應的形參Y為Single,但由于它們都是按照值傳遞,因此將轉(zhuǎn)化為3,而234可以直接賦給Y,因此正確;對于Fun(“245”, “231.5”),由于實參“245”和“231.5”均為字符串值,因此其與對應形參X、Y將按照值傳遞,而數(shù)字字符串是可以轉(zhuǎn)化為數(shù)值類型的,因此正確。綜上所述,正確答案為B。2.     

6、  對于該題,由于要求是“能正確引用函數(shù)Fun的是”,因此,雖帶括號,并且無Call引導,但卻可以通過諸如:Print Fun(3.14,234)加以引用。若改為:“能正確調(diào)用函數(shù)Fun的語句是”,則此時不可選,只能選。(二)  以江蘇省計算機等級考試2002年春季的一道考題為例:調(diào)用由語句Private Sub Convent(Y As Integer)定義的Sub過程時,以下不是按值傳遞的語句_。A.Call Convent(X)B.Call Convent(X*1)C.Convent(X)D.Convent X分析:1.    

7、   對于A、B選項,實參分別為(X)和X*1,均為表達式,因此A、B選項中的實參將按照值傳遞;對于D選項,實參X未用括號引導,此時不可加Call,因此語句正確,同時,根據(jù)判別流程圖,實參X與形參Y必按地址傳遞。分析至此,對于該題為單選題,已經(jīng)可以斷定答案是D。2.       現(xiàn)在考慮C選項語句Convent(X)帶括號,但卻無Call引導,因此直覺上似乎不能正確執(zhí)行。但若我們在VB代碼編輯器中輸入該句,回車后,該語句自動調(diào)整為:Convent (X),注意此時Convent與(X)之間有一個空格,因此該句中的括

8、號是用于X,而不是用于Convent,所以盡管無Call引導但其卻能夠執(zhí)行,此時實參為(X),因此參數(shù)將按值傳遞。所以對于Call Convent(X)和Convent(X),雖然都能執(zhí)行,并非是由于Convent(X)前可以省略Call,而在于它們的實參分別是X和(X),其傳遞參數(shù)的方式自然就不同。(三)  閱讀程序?qū)懗鲞\行結(jié)果: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,zEnd SubPrivate 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, zEnd Sub分析:根據(jù)判別流程圖知,第一、二參數(shù)按地址傳

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論