(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;

Delphi 函数参数修饰中的var 、out和const的更多相关文章

  1. JavaScript学习系列5 ---ES6中的var, let 和const

    我们都知道JavaScript中的var,在本系列的 JavaScript学习系列2一JavaScript中的变量作用域 中,我们详细阐述了var声明的变量的作用域 文章中提到,JavaScript中 ...

  2. Delphi的参数修饰const/var/output 与C++的对应关系

    delphi的const/input和默认的没有修饰, C++都是一样的 delphi的var,对应C++那边是指针,  调用方需要管理内存(负责分配内存及销毁) delphi的output , 对应 ...

  3. Python中sorted(iterable, *, key=None, reverse=False)函数参数定义中的独立星号(*)的含义

    老猿在 <Python中函数的参数带星号是什么意思?>中介绍了Python函数中参数带星号的含义,而在实际使用和Python的标准文档中,会看到某写函数(如sorted(iterable, ...

  4. Delphi 中 函数参数中的 const 修饰符的本质以及注意事项

    来自:http://blog.csdn.net/farrellcn/article/details/9096787 ------------------------------------------ ...

  5. (转)用库函数stdarg.h实现函数参数的可变

    原文地址:https://blog.csdn.net/jinkui2008/article/details/1967055 #define _INTSIZEOF(n)   ( (sizeof(n) + ...

  6. Delphi函数参数传递 默认参数(传值)、var(穿址)、out(输出)、const(常数)四类

    Delphi的参数可以分为:默认参数(传值).var(传址).out(输出).const(常数)四类 可以对比C/C++的相关知识,类比学习. 1.默认参数是传值,不会被改变,例子 function ...

  7. 为什么JavaScript函数中的参数前面不能加var

    首先这里是JavaScript的语法规则. 其次在调用function()函数的时候参数时外部传入的.在传入之前就已经被声明了.没必要在函数参数里声明. 如果想要在函数里用新的参数 function( ...

  8. Delphi函数的out、var等关键字的作用,和使用场景

    问题描述 Delphi函数的out.var等关键字的作用,和使用场景 Delphi函数的out.var等关键字的作用,和使用场景,我知道var是作为传值调用,但是像out这个关键字又是什么作用呢? 解 ...

  9. Delphi 函数指针(函数可以当参数)

    首先学习: 指向非对象(一般的)函数/过程的函数指针 Pascal 中的过程类型与C语言中的函数指针相似,为了统一说法,以下称函数指针.函数指针的声明只需要参数列表:如果是函数,再加个返回值.例如声明 ...

随机推荐

  1. hdu 1875 畅通工程再续(最小生成树,基础)

    题目 让人郁闷的题目,wa到死了,必须要把判断10.0和1000.0的条件放到prim函数外面去.如代码所放.... 正确的(放在prim外): //2个小岛之间的距离不能小于10米,也不能大于100 ...

  2. Jenkins使用

    1. Jenkins工作流程: ①配置代码源,从代码源(如svn.git等)拉取代码,放入工作区 ②构建触发器(引发构建的条件,比如一定周期.代码提交更改等),从而能自动的进行构建 ③构建,选择构建的 ...

  3. Linux下c++通过动态链接库调用类

    http://hi.baidu.com/ablenavy/item/b498901c6826bbf587ad4e33 Linux下的动态链接库叫so,即Shared Object,共享对象.一些函数就 ...

  4. Java实现二维码QRCode的编码和解码

    涉及到的一些主要类库,方便大家下载: 编码lib:Qrcode_swetake.jar   (官网介绍-- http://www.swetake.com/qr/index-e.html) 解码lib: ...

  5. hdu 1002 A+B

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1002 复习一下大数 模板: #include <stdio.h> #include <s ...

  6. cojs 简单的最近公共祖先 解题报告

    我曾经自己想过每考试一次就从考试题中找找idea来出题 这次又找到了一个,先不管原来的考试题是什么 考试题中其中的一部分就是今天的这道题目啦 当时考场上自己比较傻,没有注意到有用的性质,套用了之前黑白 ...

  7. *[topcoder]PalindromicSubstringsDiv2

    http://community.topcoder.com/stat?c=problem_statement&pm=12967 计算一个字符串里Palindrome的数量.我的DP方法需要n^ ...

  8. PHP中的抽象类与接口

    抽象类 php5支持抽象类和抽象方法.类前加 abstract, 此类就成为抽象类,无法被实例化,此类天生就是用来被继承的,给子类提供了一个类的模板; 类方法前加 abstract,是抽象方法,抽象方 ...

  9. IOS中实现图片点击全屏预览

    //// ViewController.m// XWZoomImageView//// Created by xiao on 15/11/13.// Copyright © 2015年 xiao. A ...

  10. 转ATL对象类型

    http://hi.baidu.com/rural_child/item/d91ce5d8fba9c8e73cc2cbf9 1.Objects a.Simple Object:用于实现业务逻辑,无用户 ...