Delphi的参数可以分为:默认参数(传值)、var(传址)、out(输出)、const(常数)四类

  可以对比C/C++的相关知识,类比学习。

  1.默认参数是传值,不会被改变,例子

function MyFun(x : Integer) : Integer;
begin
Inc(x);
Result := x;
end;

  2.var参数是传址,会被改变,例子

function MyFunVar(var x : Integer) : Integer;
begin
Inc(x);
Result := x;
end;

  3.out参数是为支持Com的,和var的结果是一样的,一般我们用不着

function MyFunOut(out x : Integer) : Integer;
begin
Inc(x);
Result := x;
end;

  4.const参数绝对不可以赋值的,这是被编译器优化的方式,尽量多用

function MyFunConst(const x : Integer) : Integer;
begin
Inc(x); //这句会报错,因为带const前缀的参数是不可以被修改的
Result := x;
end;

  

  下面做调用这些函数的测试

procedure TForm1.Button1Click(Sender : TObject);
var
a : Integer;
begin
a := 5;
MyFun(a);
ShowMessage(IntToStr(a)); //6 a := 6;
MyFunVar(a);
ShowMessage(IntToStr(a)); //7 a := 6;
MyFunOut(a);
ShowMessage(IntToStr(a)); //7 a := 6;
MyFunConst(a);
ShowMessage(IntToStr(a)); //6,因为在MyFunConst里面是不能对const参数进行修改的 end;

  

Delphi函数参数传递 默认参数(传值)、var(穿址)、out(输出)、const(常数)四类的更多相关文章

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

    参数可以分为: 默认参数(传值).var(传址).out(输出).const(常数)四类 {默认参数是传值, 不会被改变} function MyF1(x: Integer): Integer; be ...

  2. 面试-默认参数(传值)、var(传址)、out(输出)、const(常数)

    相关资料:1.http://blog.csdn.net/rznice/article/details/69600112.http://www.cnblogs.com/echomyecho/archiv ...

  3. C++中函数的默认参数

    使用方法: (1)在函数声明或定义时,直接对参数赋值,该参数就是默认参数. (2)在函数调用时,省略部分或全部参数,这时就会使用默认参数进行代替. 注意事项: (1)一般在声明函数是设置默认参数. 如 ...

  4. JavaScript函数的默认参数(default parameter)

    JavaScript函数的默认参数(default parameter) js函数参数的默认值都是undefined, ES5里,不支持直接在形参里写默认值.所以,要设置默认值,就要检测参数是否为un ...

  5. C#函数的默认参数——填坑记

    昨天踩了一个坑.默认参数 + 增量发布的坑. 过程是这样的. 1. 有一个底层的方法,格式形如 void Test<T>(int p1, string p2, Func<T> ...

  6. python定义函数时默认参数注意事项

    如果在调用一个函数时,没有传递默认参数,则函数内的默认参数是对函数的默认参数属性__defaults__的引用, 如 def func(arg1=[]): arg1.append(2) 调用func时 ...

  7. 对C++虚函数使用默认参数的注意事项

    本文为大便一箩筐的原创内容,转载请注明出处,谢谢:http://www.cnblogs.com/dbylk/ 备忘一个关于虚函数的小知识点 使用多态调用一个类型中定义的虚函数时,编译器会根据指针的当前 ...

  8. Python函数的默认参数的设计【原创】

    在Python教程里,针对默认参数,给了一个“重要警告”的例子: def f(a, L=[]): L.append(a) return L print(f(1)) print(f(2)) print( ...

  9. 【C/C++】函数的默认参数/函数的占位参数/函数重载/注意事项

    函数的默认参数 返回值类型 函数名(参数=默认值){} #include <iostream> using namespace std; int func(int a = 10, int ...

随机推荐

  1. [RouterOS] ROS对接碧海威或PA等流控实现完美流控详细教程(附脚本全免费)

    前言: 经常在群里看到不少朋友争论海蜘蛛 ROS 维盟 爱快 碧海威 流控大师 Woyos等等软路由,哪个好.实际上,网络产品是复杂的,现在的软路由功能上已经远远不是单独的路由了.每种产品都有他本身的 ...

  2. BZOJ 1462: Superkmp

    Description 匹配字符串A,B,匹配条件是在A长度为=B的子串中,排名顺序相同. Sol KMP+树状数组. KMP匹配的时候计算排名就可以了啊...这个东西可以用树状数组维护. 这题是个双 ...

  3. 2.1---删除链表中重复元素(CC150)

    分成两种,1种开了额外空间,临时缓冲区,一种没有开 import java.util.HashSet; import java.util.Set; class ListNode{ int data; ...

  4. 谷歌Chrome浏览器开发者工具的基础功能

    上一篇我们学习了谷歌Chrome浏览器开发者工具的基础功能,下面介绍的是Chrome开发工具中最有用的面板Sources.Sources面板几乎是最常用到的Chrome功能面板,也是解决一般问题的主要 ...

  5. iOS学习之UINavigationController详解与使用(一)添加UIBarButtonItem

    http://blog.csdn.net/totogo2010/article/details/7681879 1.UINavigationController导航控制器如何使用 UINavigati ...

  6. 怎么安装MYSQL5.0的JDBC驱动

    1.下载mysql for jdbc driver.   http://dev.mysql.com/downloads/connector/j/3.1.htmlMySQL Connector/J is ...

  7. 08.01 签到! js 作用域

    js 作用域 : 1.js 没有块作用域 : for (var i = 0;i < 4; i++){ } alert(i) // i = 3 2.js 没有动态作用域: function f1( ...

  8. Unity3d《Shader篇》地球旋转上空悬浮云层

    记得把纹理设置成Repeat Shader "Custom/Earth" { Properties { _MainTex ("Base (RGB)", 2D) ...

  9. 解读Unity中的CG编写Shader系列三

    转自http://www.itnose.net/detail/6096068.html 在上一个例子中,我们得到了由mesh组件传递的信息经过数学转换至合适的颜色区间以颜色的形式着色到物体上.这篇文章 ...

  10. jquery单选框radio值改变change事件

    2015年11月25日 13:39:03 $().ready(function(){ //默认显示#input_div if ($("input[name='type']:checked&q ...