DELPHI參數幾個概念上的區別

來源:互聯網
上載者:User

 引用參數:

 

引用參數用var關鍵字標示

procedure DoubleTheValue (var Value: Integer);begin  Value := Value * 2;end;

在這種情況下,參數既把一個值傳遞給過程,又把新值返回給調用過程的代碼。當你執行完以下代碼時:

var  X: Integer;begin  X := 10;  DoubleTheValue (X);
x變數的值變成了20,因為過程通過引用訪問了X的原始儲存單元,由此改變了X的初始值

 在C++中, 引用用&表示

值得注意的是:

Delphi 3增加了一種新的參數:out。out參數沒有初始值,只是用來返回一個值。out參數應只用於COM過程和函數,一般情況下最好使用更有效var參數。除了沒有初始值這一點之外,out參數與var參數相同。

 

常量參數

 

和C++一樣,用CONST關鍵字表示

 

function DoubleTheValue (const Value: Integer): Integer

 

編譯器會選用一種與引用參數相似的方法編譯常參(C++術語中的常量引用),但是從表面上看常參又與值參相似,因為常參初始值不受常式的影響。

 

開放數組參數

 

與C語言不同,Pascal 函數及過程的參數個數是預定的。如果參數個數預先沒有確定,則需要通過開放數組來實現參數傳遞。

一個開放數組參數就是一個固定類型開放數組的元素。 也就是說,參數類型已定義,但是數組中的元素個數是未知數。

function Sum (const A: array of Integer): Integer;

類型變化的開放數組參數

 

除了類型固定的開放數組外,Delphi 還允許定義類型變化的甚至無類型的開放數組。這種特殊類型的數組元素可隨意變化,能很方便地用作傳遞參數。

技術上,array of const 類型的數組就能實現把不同類型、不同個數元素組成的數組一下子傳遞給常式

function Format (const Format: string; const Args: array of const): string;

N := 20;
S := 'Total:';
Label1.Caption := Format ('Total: %d', [N]);
Label2.Caption := Format ('Int: %d, Float: %f', [N, 12.4]);
Label3.Caption := Format ('%s %d', [S, N * 2]);

 

但我們往往會遇到這樣的問題:

 

在FUN()中傳入 var a: array of integer 參數之後
不能在函數裡SetLength(a,num);

 

所以我們把參數設為動態數群組類型

 

type

tarrayofinteger = array of integer;

procedure grow( var data: tarrayofinteger );

begin

setlength( data, length(data) ,   新長度 );

// 動態數組作為參數可以改變數組大小。

end;

 

 

參考BLOG:

http://hi.baidu.com/broland/blog/item/0ab119f516b4ade57609d75c.html

參考文獻:

<PASCAL精要>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.