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

出處 : 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值