c++参数传递

定义:

形参:指出现在 Sub 和 Function过程形参表中的变量名、数组名,该过程在被 调用前,没有为它们分配内存,其作用是说明自变量的类型和形态以及在过程中的作用。形参可以是除定长字符串变量之外的合法变量名,也可以带括号的数组名。
实参:实参就是在调用Sub 和Function过程时,从主调过程传递给被调用过程的参数值。实参可以是变量名、数组名、常数或表达式。在过程调用传递参数时,形参与实参是按位置结合的,形参表和实参表中对应的变量名可以不必相同,但它们的数据类型、参数个数及位置必须一一对应。 [1]  
两者关系
1. 形参只能是 变量,实参可以是 常量、变量或 表达式。在被定义的函数中,必须指定形参的类型。
2. 实参与形参的个数应一样,类型应一致。字符型和整型可以互相通用。
3. 在调用函数时,如果实参是数组名,则传递给形参的是数组的首地址
4.实参传递给形参是单向传递,形参变量在未出现函数调用时,并不占用内存,只在调用时才占用。调用结束后,将释放内存。执行一个被调用函数时,形参的值如果发生改变,并不会改变主调函数中的实参的值。 [2]  
5.形参如同公式中的符号,实参就是符号具体的值,在调用过程前必须得到 赋值;调用过程就是实现形参与实参的结合,把实参的值通过调用传递给形参,相当于把值代入公式进行计算。
实现方法:
1、按值传递参数:
按值传递参数时,是将实参变量的值复制一个到临时 存储单元中,如果在调用过程中改变了形参的值,不会影响实参变量本身,即实参变量保持调用前的值不变。按值传递参数时,需要在参数名前加"ByVal"关键字。
2、按地址传递参数:
按地址传递参数时,把实参变量的地址传送给被调用过程, 形参实参共用内存的同一地址。在被调用过程中,形参的值一旦改变,相应实参的值也跟着改变。如果实参是一个常数或表达式, Visual Basic 6.0会按"传值"方式来处理,按地址传递不需要"ByVal" 关键字[3]  
3、按数组传递参数:
在VB6.0中,允许使用 数组作为实参传递到子过程的形参中,数组传递必须采用地址传递的方式来传递参数。数组参数在传递时应注意以下两个方面:
① 在实参和形参列表中只写数组名,忽略维数的定义,但圆括号不能省,当数组作为参数传递时,系统将实参数组的起始地址传给过程,使形参数组也具有与实参数组相同的起始地址,若参数是 多维数组,每维以逗号分隔;
② 被调过程可分别通过 LboundUbound函数确定实参数组的 下界上界
遇到问题:
如图片所示:

    上面代码来发送消息,在栈上传递地址(待验证....)
------------------------------------------------------------------------------------------------------------
    下面代码来接受参数:
 
问题原因:
传递地址有问题;
解决办法:
直接传递值,就够用;
------------------------------------------------------------------------------------------------------------

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值