VB過程(函數)之間的參數_第1頁
VB過程(函數)之間的參數_第2頁
VB過程(函數)之間的參數_第3頁
VB過程(函數)之間的參數_第4頁
VB過程(函數)之間的參數_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、VB過程(函數)之間的參數傳遞焦作市職業(yè)技術學校2013級計算機一班一、一、形式參數與實際參數形式參數與實際參數 o1 形式參數:就是在定義函數或過程的時候命名的參數。通俗講就是一個記號。o2 實際參數:就是在執(zhí)行時,調用函數或過程時,傳遞給函數或過程的參數。通俗講就是實際值。o3 參數嘛,就是一個可變量,它隨著使用者的不同而發(fā)生變化。舉個例子,在中學的時候學過sin(x)函數,這里的x就是形式參數,當你需要求1的正弦值時,你會使用sin(1),這里的1就是實際參數。o4 形參和實參間的關系:兩者是在調用的時候進行結合的,通常實參會將取值傳遞給形參,形參去之后進行函數過程運算,然后可能將某些值

2、經過參數或函數符號返回給調用者。 注意 在過程之間傳遞參數,形式參數和實際參數是很重要的概念。我們通常說形式參數是過程為了運行的需要預先在內存中保留的地址單元,而實際參數就是在調用過程時放入這些內存地址中進行處理的數據。如果形式參數是一個盒子,那么實際參數就是盒子里面裝的東西。在參數傳遞的過程中,形式參數和實際參數的數據類型要一致。二、參數傳遞二、參數傳遞 o函數參數的傳遞方式有兩種,一種是按地址傳遞,一種是按值傳遞。o按地址傳遞:按地址傳遞:調用函數時,不直接把實參的值“告訴”函數,而是把地址“告訴”它,函數根據這個地址來尋找并處理值,如果函數修改了這個值,也就修改了這個地址對應的值。o按值

3、傳遞:按值傳遞:把值復制一份再給函數,這個值只屬于函數,函數對這個值的修改不影響原值。oVB中,要按地址傳遞可在形參前加中,要按地址傳遞可在形參前加ByRef,要按,要按值傳遞得在形參前加值傳遞得在形參前加ByVal,如果什么也不加則,如果什么也不加則表示按地址傳遞。表示按地址傳遞。 1) 按值傳遞按值傳遞 o如果在聲明過程時,形式參數名前面加上關鍵字“ByVal”,即規(guī)定了在調用此過程時該參數是按值傳遞的。按值傳遞參數時,傳遞的只是變量的副本。如果過程改變了這個值,則所做的改動只影響副本而不會影響變量本身。o代碼1o*oPrivate Sub Command1_Click()o Dim nu

4、m1 As Integero num1 = 5o Print num1o Call MySub(num1)oPrint num1 輸出結果為5o o Call MySub2(num1)oPrint num1 輸出結果仍為5oEnd Subo oPrivate Sub MySub(ByVal A As Integer)o A = 10oEnd Subo oPrivate Sub MySub2(ByVal A As String)o A = abcoEnd Subo* 如果過程中的形式參數設定為按值傳遞,就不要求調用時相應實參數的類型必須與其一致,只要實參數的值能夠轉換為形參的類型即可。 o代碼2

5、o*oPrivate Sub Command1_Click()o Dim num1 As Integero num1 = 5o Print num1o Call MySub2(num1)oPrint num1 輸出結果仍為5oEnd Subo Private Sub MySub2(ByVal A As String)o A = abcoEnd Subo* 2)按地址傳遞參數按地址傳遞參數 o按地址傳遞參數時,過程用變量的內存地址去訪問實際變量的內容,將結果的變量傳遞給過程時,通用過程可永遠改變該變量值。ByRef 是 Visual Basic 的缺省選項。o如果指定按地址傳遞參數的數據類型,就

6、必須將這種類型的值傳給參數,即如果過程中的形式參數設定為按地址傳遞,就必須要求調用時相應實參數的類型必須與其一致。o按地址傳遞參數時,傳遞給所調用過程的形參實際是實參的地址。如果過程改變了這個值,則所做的變動也會影響實參變量本身。 o代碼3o*oPrivate Sub Command1_Click()o Dim num1 As Integero num1 = 5o Print num1o Call MySubByRef(num1)o Print num1 輸出結果為10o Call MySubByRef2(num1)o Print num1 默認情況,輸出結果仍為10o End Subo Pr

7、ivate Sub MySubByRef(ByRef A As Integer)o A = 10oEnd Subo Private Sub MySubByRef2(A As Integer)o A = 10oEnd Subo* 3) 二者比較二者比較oByVal 傳送參數內存的一個拷貝給被調用者。也就是說,棧中壓入的直接就是所傳的值。ByRef 傳送參數內存的實際地址給被調用者。也就是說,棧中壓入的是實際內容的地址。被調用者可以直接更改該地址中的內容。ByVal 可選的。表示該參數按值傳遞。ByRef 表示該參數按地址傳遞。 ByRef 是 Visual Basic 的缺省選項。ByVal是傳

8、遞值,源數據不會被修改。你可以把這個值當作自己的局部變量來使用ByRef是傳遞地址,源數據可能被修改。你對這個變量的操作將對你傳入的那個變量產生影響,就像指針的感覺。 4)參數傳遞中的特殊情況參數傳遞中的特殊情況o下面演示了實參變量通過加上一個額外的小括號來強制其以單個變量為實參進行按值傳遞,在這里默認的byRef已經失效。o代碼4o*oPrivate Sub Command1_Click()o Dim num1 As Integero num1 = 5o Print num1o Call MySubByRef2 (num1)o Print num1oEnd SuboPrivate Sub MySubByRef2 (A As Integer)o A = 10oEnd Subo*5)幾點說明幾點說明實際上,如果在過程中不改變形參的值,無論是按值還是按地址傳遞,結果都是一樣的。對于一般過程來講,參數的主要目的是設定一個條件,所以形參往往只是用來參與計算或給其他變量賦值,其本身的值不會發(fā)生改變。在過程中,對按值傳遞形參變量的值改變不會導致對應實參變量的改變,而按地址傳

溫馨提示

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

評論

0/150

提交評論