Delphi 函數參數修飾中的var 、out和const

来源:互联网 发布:mysql 开启日志 编辑:程序博客网 时间:2024/04/29 10:48

出處 : http://blog.sina.com.cn/s/blog_6e9c16890100x1n9.html


(1)var修飾符

添加var 是地址傳遞,會修改原有的變量

var  s: string;begin  S := 'Hello';  ChangeSVar(S);  ShowMessage(S);end;// ChangeSVar 定義procedure TForm1.ChangeSVar(var A: string);begin  A := A + 'World';end;
以上會輸出Hello World,因為是傳址,修改的是原來的A


(2)無任何修飾符

var  S: string;begin  S := 'Hello';  ChangeS(S);  ShowMessage(S);end;// ChangeS定義procedure TForm1.ChangeS(A: string);begin  A := A + 'World';end;
以上會輸出Hello,因為方法ChangeS其實是創建了一個新的A,而輸出的還是原來的A,值並沒有改變


(3)out修飾符

var  S: string;begin  S := 'Hello';  ChangeSOut(S);// 此時S的值是'Hello,'而非'Hello,World'!,在過程Hello中的S的原始值被丟棄了  ShowMessage(S);end;// ChangeSOut定義procedure TForm1.ChangeSOut(out A: string);begin  A := A + 'World';end;
以上會輸出World,out僅僅接受返回的值,對out的任何輸入都會被忽略。同時out傳遞給過程的實際參數不必進行初始化,比如對ChangeSOut的調用:
Var  Tmp: string;Begin  ChangeSOut(Tmp);// 編譯也可以通過End;

(4)Const修飾符
Const修飾的參數傳入之後不允許修改

如果在過程中修改參數會報錯,比如:

Procedure xxxx.TestConst(const A: String);Begin  A := 'ss'; // 企圖修改const修改的參數,會報錯End;

0 0
原创粉丝点击