Delphi函数参数传递 默认参数(传值)、var(穿址)、out(输出)、const(常数)四类
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(常数)四类的更多相关文章
- delphi 函数参数传递 默认参数(传值)、var(传址)、out(输出)、const(常数)四类
参数可以分为: 默认参数(传值).var(传址).out(输出).const(常数)四类 {默认参数是传值, 不会被改变} function MyF1(x: Integer): Integer; be ...
- 面试-默认参数(传值)、var(传址)、out(输出)、const(常数)
相关资料:1.http://blog.csdn.net/rznice/article/details/69600112.http://www.cnblogs.com/echomyecho/archiv ...
- C++中函数的默认参数
使用方法: (1)在函数声明或定义时,直接对参数赋值,该参数就是默认参数. (2)在函数调用时,省略部分或全部参数,这时就会使用默认参数进行代替. 注意事项: (1)一般在声明函数是设置默认参数. 如 ...
- JavaScript函数的默认参数(default parameter)
JavaScript函数的默认参数(default parameter) js函数参数的默认值都是undefined, ES5里,不支持直接在形参里写默认值.所以,要设置默认值,就要检测参数是否为un ...
- C#函数的默认参数——填坑记
昨天踩了一个坑.默认参数 + 增量发布的坑. 过程是这样的. 1. 有一个底层的方法,格式形如 void Test<T>(int p1, string p2, Func<T> ...
- python定义函数时默认参数注意事项
如果在调用一个函数时,没有传递默认参数,则函数内的默认参数是对函数的默认参数属性__defaults__的引用, 如 def func(arg1=[]): arg1.append(2) 调用func时 ...
- 对C++虚函数使用默认参数的注意事项
本文为大便一箩筐的原创内容,转载请注明出处,谢谢:http://www.cnblogs.com/dbylk/ 备忘一个关于虚函数的小知识点 使用多态调用一个类型中定义的虚函数时,编译器会根据指针的当前 ...
- Python函数的默认参数的设计【原创】
在Python教程里,针对默认参数,给了一个“重要警告”的例子: def f(a, L=[]): L.append(a) return L print(f(1)) print(f(2)) print( ...
- 【C/C++】函数的默认参数/函数的占位参数/函数重载/注意事项
函数的默认参数 返回值类型 函数名(参数=默认值){} #include <iostream> using namespace std; int func(int a = 10, int ...
随机推荐
- Sqli-LABS通关笔录-16
这个关卡之前我还使用了一下工具跑,发现居然跑不出来.这就尴尬了.行吧手工试试. payload admin") and If(ascii(substr(database(),1,1))=11 ...
- OpenCV成长之路(3):模仿PhotoShop中魔术棒工具
本文的主题实际上是图像的颜色空间的转换,借助一个颜色选取程序来说明OpenCV中颜色转换函数的用法以及一些注意事项. 一.几种常见的颜色空间: RGB颜色空间:RGB采用加法混色法,因为它是描述各种“ ...
- FWT
Fast Walsh-Hadamard Transform .pre 今天本来想看FFT的应用的...翻翻picks的博客发现了好东西Fast Walsh-Hadamard Transform,感觉挺 ...
- jQuery操作checkbox实例
示意图 <script type="text/javascript"> $(function () { $("#ddlNumber").change ...
- 【Linux】find grep 联合使用 过滤所有子目录、文件
find . -type f -name '*.*' | xargs grep --color -n 'Admin@123'find . -type f -name '*.*' | xargs sed ...
- Read N Characters Given Read4 I & II
The API: int read4(char *buf) reads 4 characters at a time from a file. The return value is the actu ...
- 【转】Nginx服务器的反向代理proxy_pass配置方法讲解
[转]Nginx服务器的反向代理proxy_pass配置方法讲解 转自:http://www.jb51.net/article/78746.htm 就普通的反向代理来讲Nginx的配置还是比较简单的, ...
- centos7删除已经安装的docker
centos下可以使用yum来删除docker. 列出docker包的具体的名字. $ yum list installed | grep docker docker-engine.x86_64 -0 ...
- 安装courier-authlib找不到mysqlclient.so文件
使用configure配置的时候使用 --with-authmysql指明libmysqlclient.so的存放位置即可
- springMVC中ajax的使用
springMVC中使用ajax有两种方法,第一种是根据servletAPI来使用ajax,第二种是根据springMVC给我们提供的API来使用. 一.根据servletAPI: springMVC ...