可变参数传递

可变参数传递

ID:41028708

大小:33.00 KB

页数:6页

时间:2019-08-14

可变参数传递_第1页
可变参数传递_第2页
可变参数传递_第3页
可变参数传递_第4页
可变参数传递_第5页
资源描述:

《可变参数传递》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、可变参数传递.txt     -你脚踏俩只船,你划得真漂亮。-每个说不想恋爱的人心里都装着一个不可能的人。我心疼每一个不快乐却依然在笑的孩子。(有没有那么一个人,看透我在隐身,知道我在等人。变体开放数组参数在Delphi中编写参数个数可变的函数变体开发数组参数允许向单个过程或函数传递不同类型表达式的数组。要定义含有变体开放数组参数的例程,需要指定arrayofconst作为参数类型。如,procedureDoSomething(A:arrayofconst);这里声明了一个叫做DoSomething的过程,该过程可以操作不同种类的数组。arrayofconst结构等价

2、于arrayofTVarRec。TVarRec,在单元System中声明,用于表示一个记录,记录中有一个可以保存多种值(整数、布尔、字符、实数、串、指针、类、类引用、接口、变体等)的变体部分。TVarRec中的VType字段表示数组中每个元素的类型。一些类型作为指针传递而不传递值;特别是长串,作为指针传递并且必需转换为string类型。下面的例子在函数中使用了变体开放数组参数,该函数对接受的每个元素创建一个串表示法,最后连接成一个串。该函数中调用的串处理例程都定义在SysUtils单元中。functionMakeStr(constArgs:arrayofconst):

3、string;constBoolChars:array[Boolean]ofChar=('F','T');varI:Integer;beginResult:='';forI:=0toHigh(Args)dowithArgs[I]docaseVTypeofvtInteger:Result:=Result+IntToStr(VInteger);vtBoolean:Result:=Result+BoolChars[VBoolean];vtChar:Result:=Result+VChar;vtExtended:Result:=Result+FloatToStr(VExten

4、ded^);vtString:Result:=Result+VString^;vtPChar:Result:=Result+VPChar;vtObject:Result:=Result+VObject.ClassName;vtClass:Result:=Result+VClass.ClassName;vtAnsiString:Result:=Result+string(VAnsiString);vtCurrency:Result:=Result+CurrToStr(VCurrency^);vtVariant:Result:=Result+string(VVariant

5、^);vtInt64:Result:=Result+IntToStr(VInt64^);end;end;可以用一个开放数组构造器(见开放数组构造器)来调用该函数。例如:MakeStr(['test',100,'',True,3.14159,TForm])上面的调用将返回串“test100T3.14159TForm"。//////////////////////////////////////va_list可变参数传递2007-10-0909:28请问:va_list(),va_start()是何意?(一)写一个简单的可变参数的C函数下面我们来探讨如何写一个简单的可变参

6、数的C函数.写可变参数的C函数要在程序中用到以下这些宏:voidva_start(va_listarg_ptr,prev_param);typeva_arg(va_listarg_ptr,type);voidva_end(va_listarg_ptr);va在这里是variable-argument(可变参数)的意思.这些宏定义在stdarg.h中,所以用到可变参数的程序应该包含这个头文件.下面我们写一个简单的可变参数的函数,改函数至少有一个整数参数,第二个参数也是整数,是可选的.函数只是打印这两个参数的值.voidsimple_va_fun(inti,...){va

7、_listarg_ptr;intj=0;va_start(arg_ptr,i);j=va_arg(arg_ptr,int);va_end(arg_ptr);printf("%d%d",i,j);return;}我们可以在我们的头文件中这样声明我们的函数:externvoidsimple_va_fun(inti,...);我们在程序中可以这样调用:simple_va_fun(100);simple_va_fun(100,200);从这个函数的实现可以看到,我们使用可变参数应该有以下步骤:1)首先在函数里定义一个va_list型的变量,这里是arg_

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。