DELPHI参数几个概念上的区别 收藏
DELPHI參數幾個概念上的區別 收藏
?引用參數:
引用參數用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精要>
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/jqandjq/archive/2010/03/02/5339123.aspx
總結
以上是生活随笔為你收集整理的DELPHI参数几个概念上的区别 收藏的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《大数据》杂志——大数据技术发展的十个前
- 下一篇: Delphi中DLL初始化和退出处理