參數傳遞

參數傳遞

參數傳遞,是在程式運行過程中,實際參數就會將參數值傳遞給相應的形式參數,然後在函式中實現對數據處理和返回的過程,方法有按值傳遞參數,按地址傳遞參數和按數組傳遞參數。

基本介紹

  • 中文名:參數傳遞
  • 外文名:Parameter Passing
  • 方法:值傳遞,地址傳遞,數組傳遞
定義,方法,調用帶參數的函式,實例,

定義

形參:指出現在Sub 和Function過程形參表中的變數名、數組名,該過程在被調用前,沒有為它們分配記憶體,其作用是說明自變數的類型和形態以及在過程中的作用。形參可以是除定長字元串變數之外的合法變數名,也可以帶括弧的數組名。
實參:實參就是在調用Sub 和Function過程時,從主調過程傳遞給被調用過程的參數值。實參可以是變數名、數組名、常數或表達式。在過程調用傳遞參數時,形參與實參是按位置結合的,形參表和實參表中對應的變數名可以不必相同,但它們的數據類型、參數個數及位置必須一一對應。
兩者關係
1. 形參只能是變數,實參可以是常量、變數或表達式。在被定義的函式中,必須指定形參的類型。
2. 實參與形參的個數應一樣,類型應一致。字元型和整型可以互相通用。
3. 在調用函式時,如果實參是數組名,則傳遞給形參的是數組的首地址
4.實參傳遞給形參是單向傳遞,形參變數在未出現函式調用時,並不占用記憶體,只在調用時才占用。調用結束後,將釋放記憶體。執行一個被調用函式時,形參的值如果發生改變,並不會改變主調函式中的實參的值。
5.形參如同公式中的符號,實參就是符號具體的值,在調用過程前必須得到賦值;調用過程就是實現形參與實參的結合,把實參的值通過調用傳遞給形參,相當於把值代入公式進行計算。

方法

按值傳遞參數
按值傳遞參數時,是將實參變數的值複製一個到臨時存儲單元中,如果在調用過程中改變了形參的值,不會影響實參變數本身,即實參變數保持調用前的值不變。按值傳遞參數時,需要在參數名前加"ByVal"關鍵字。
按地址傳遞參數
按地址傳遞參數時,把實參變數的地址傳送給被調用過程,形參實參共用記憶體的同一地址。在被調用過程中,形參的值一旦改變,相應實參的值也跟著改變。如果實參是一個常數或表達式,Visual Basic 6.0會按"傳值"方式來處理,按地址傳遞不需要"ByVal"關鍵字
數組傳遞參數
在VB6.0中,允許使用數組作為實參傳遞到子過程的形參中,數組傳遞必須採用地址傳遞的方式來傳遞參數。數組參數在傳遞時應注意以下兩個方面:
① 在實參和形參列表中只寫數組名,忽略維數的定義,但圓括弧不能省,當數組作為參數傳遞時,系統將實參數組的起始地址傳給過程,使形參數組也具有與實參數組相同的起始地址,若參數是多維數組,每維以逗號分隔;
② 被調過程可分別通過LboundUbound函式確定實參數組的下界上界

調用帶參數的函式

在調用函式時,您可以向其傳遞值,這些值被稱為參數。
這些參數可以在函式中使用。
您可以傳送任意多的參數,由逗號 (,) 分隔:
myFunction(argument1,argument2)
當您聲明函式時,請把參數作為變數來聲明:
function myFunction(var1,var2){這裡是要執行的代碼}
變數和參數必須以一致的順序出現。第一個變數就是第一個被傳遞的參數的給定的值,以此類推。

實例

<button onclick="myFunction('Bill Gates','CEO')">點擊這裡</button><script>function myFunction(name,job){alert("Welcome " +name+ ", the " +job);}</script>
對於下述程式,試分析用傳值、傳地址、傳數組方法傳遞參數時所得的列印結果。
PROGRAM SS(input,output);
VAR
A,B:integer;
PROCEDURE P(x,y,z:integer);
begin y:=y+1;z:=z+x;
end;
BEGIN
A:=2;b:=3;
P(A+B,A,A);
writeln (‘A=‘,A);
END
解答
(1)傳值:把實參的值計算出來傳給形參。
在調用過程P時,形參x=5;y=2;z=2
出過程P時,形參x=5;y=3;z=7
這並不把結果回送到主程式,所以結果為A=2
(2)傳地址:實參計算出結果,把地址送形參。
設變數T=A+B(結果為5)。執行時把T、A、A的
地址(設為addr1,addr2,addr2)送給形參:
x=daar1,y=addr2,z=addr2。
T的地址addr1即x→T(5)
A的地址addr2即y→A(2)
A的地址addr2即z→A(2)
執行過程P即為:①y↑:=y↑+1;②z↑:=z↑+x↑
所以,①為A:=A+1=3
②為A:=A+T=8。 因此,最後A=8.
(3)傳數組:相當於執行 A:=2;B:=3; A:=A+1;A:=A+(A+B)
writeln(‘A=‘,A);
所以,結果為A=9。

相關詞條

熱門詞條

聯絡我們