vb与c语言数组传递,VB几种函数参数传递方法,Variant,数组,Optional,ParamArray

VB几种函数参数传递方法,Variant,数组,Optional,ParamArray

一) 过程的参数被缺省为具有 Variant 数据类型。

1)ByRef按 地址传递参数在 VB 中是缺省的

按地址传递参数后,过程返回的也是地址,函数中改变了的变量值也将带回来。

2)ByVal 关键字指出参数是按值来传递的

按值传递参数时,传递的只是变量的副本。如果过程改变了这个值,则所作变动只影响副本而不会影响变量本身。

二)使用不定数量的参数 ParamArray

一般说来,过程调用中的参数个数应等于过程说明的参数个数。可用 ParamArray 关键字指明,过程将接受任意个数的参数。于是可以这样来编写计算总和的 Sum 函数:

Dim x As Integer,y As Integer,intSum As Integer

Sub Sum (ParamArray intNums ())

For Each x In intNums

y = y + x

Next x

intSum = y

End Sub

调用方法 Sum 1, 3, 5, 7, 8

三)Optional 关键字,使用可选的参数

Optional 关键字,就可以指定过程的参数为可选的。如果指定了可选参数,则参数表中此参数后面的其它参数也必是可选的,并且要用 Optional 关键字来声明。

Dim strName As String,varAddress As Variant

Sub ListText (x As String, Optional y As Variant)

List1.AddItem x

If Not IsMissing (y) Then

List1.AddItem y

End If

End Sub

调用1: Call ListText("yourname")'未提供第二个参数。

2: Call ListText("yourname",12345)

在未提供某个可选参数时,实际上将该参数作为具有 Empty 值的变体来赋值。

上例说明如何用 IsMissing 函数测试丢失的可选参数。

四)Optional 声明arr()数组与Variant 方法

通常用Optional arr() as TypeName 为非法

此时可声明函数变量为 Optional arr as Variant

调用时可使用Fun(arr())

此时函数中可用LBound(arr)的UBound(arr)确定数组边界

【Python学习】函数参数传递方法四种(位置,关键字,默认值,包裹位置,包裹关键字传递)

1. 位置传递: #--coding:utf-8-- def send(name,address): return 'package is sent to %s, located in %s' %(n ...

Typescript 常见的几种函数重载方法详解与应用示例

所谓的重载,其实就是使用相同的函数名,传入不同数量的参数或不同类型的参数,以此创建出多个方法或产生不同结果. 1. 最常见的,也就是根据定义傻瓜式地判断参数类型与数量 function showPer ...

VB中DateDiff 函数解释

VB中DateDiff 函数使用方法 DateDiff (interval, Date1 , Date2[,firstweekofyear[,firstweekofyear]])  返回一个Varia ...

python中函数参数传递的几种方法

转自  http://www.douban.com/note/13413855/ Python中函数参数的传递是通过“赋值”来传递的.但这条规则只回答了函数参数传递的“战略问题”,并没有回答“战术问题 ...

5种 JavaScript 调用函数的方法

一次又一次的,我发现,那些有bug的Javascript代码是由于没有真正理解Javascript函数是如何工作而导致的(顺便说一下,许多那样的代码是我写的).JavaScript拥有函数式编程的特性 ...

C语言 数组做函数参数不传数组个数的遍历方法

//数组做函数参数不传数组个数的遍历方法 #include #include #include void ...

C语言学习笔记 (005) - 二维数组作为函数参数传递剖析

前言 很多文章不外乎告诉你下面这几种标准的形式,你如果按照它们来用,准没错: //对于一个2行13列int元素的二维数组 //函数f的形参形式 f(int daytab[2][13]) {...} / ...

随机推荐

oracle 12541,12560,00511无监听程序, 协议适配器错误问题分析及解决方案

oracle 12541,12560,00511无监听程序, 协议适配器错误问题分析及解决方案   问题描述: 1. lsnrctl start.stop.非常慢,出现卡顿现象: 2. 执行lsnrc ...

ECSHOP验证码背景图修改教程

ECSHOP验证码背景图修改教程 ECSHOP教程/ ecshop教程网(www.ecshop119.com) 2013-11-18   ECSHOP验证码背景图修改教程: ECSHOP前后台的某些地 ...

Linux常用命令(持续更新中)

cd 目录名 :进入某个目录 ls :列出当前目录的内容 locate 文件名/目录名:寻找文件.目录 find 目录名1 -name 文件名/目录名2 :在目录1中寻找目录2 whereis  文件 ...

application:didFinishLaunchingWithOptions:详解

iOS 程序启动时总会调用application:didFinishLaunchingWithOptions:,其中第二个参数launchOptions为NSDictionary类型的对象,里面存储有 ...

【CSS3】Advanced4:Advanced Colors

1.rgba(red,green,blue,alpha(不透明度0.0(完全透明)与 1.0(完全不透明)) 2.HSLa(hue(色调 0red 120green 240blue),saturati ...

iOS 自定义一个常规的TabBar

#import "WJWBaseTabBarViewController.h" #import "WJWTabBarButton.h" #import &quo ...

JAVA8 Stream集合操作:中间方法和完结方法

StreamLambda为java8带了闭包,这一特性在集合操作中尤为重要:java8中支持对集合对象的stream进行函数式操作,此外,stream api也被集成进了collection api, ...

IDEA运行android项目一直是同一个apk

1.IDEA运行android项目时不像eclipse和android studio那样直接运行,IDEA需要设置Artifacts,这样每次运行的时候它才能重新编译,以下附上步骤! 这样就可以了.

Oracle层次查询和分析函数在号段选取中的应用

转自:http://www.itpub.net/thread-719692-1-1.html 摘要一组连续的数,去掉中间一些数,如何求出剩下的数的区间(即号段)?知道号段的起止,如何求出该号段内所有的 ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值