zoukankan      html  css  js  c++  java
  • c++參数传递

    定义:

    形參:指出如今Sub 和Function过程形參表中的变量名、数组名,该过程在被调用前。没有为它们分配内存。其作用是说明自变量的类型和形态以及在过程中的作用。形參能够是除定长字符串变量之外的合法变量名,也能够带括号的数组名。
    实參:实參就是在调用Sub 和Function过程时,从主调过程传递给被调用过程的參数值。实參能够是变量名、数组名、常数或表达式。在过程调用传递參数时。形參与实參是按位置结合的,形參表和实參表中相应的变量名能够不必同样,但它们的数据类型、參数个数及位置必须一一相应。[1] 
    两者关系
    1. 形參仅仅能是变量,实參能够是常量、变量或表达式。在被定义的函数中,必须指定形參的类型。

    2. 实參与形參的个数应一样。类型应一致。字符型和整型能够互相通用。

    3. 在调用函数时。假设实參是数组名,则传递给形參的是数组的首地址
    4.实參传递给形參是单向传递。形參变量在未出现函数调用时,并不占用内存,仅仅在调用时才占用。调用结束后,将释放内存。运行一个被调用函数时,形參的值假设发生改变。并不会改变主调函数中的实參的值。[2] 
    5.形參如同公式中的符号,实參就是符号详细的值。在调用过程前必须得到赋值;调用过程就是实现形參与实參的结合,把实參的值通过调用传递给形參。相当于把值代入公式进行计算。
    实现方法:
    1、按值传递參数:
    按值传递參数时。是将实參变量的值复制一个到暂时存储单元中,假设在调用过程中改变了形參的值,不会影响实參变量本身,即实參变量保持调用前的值不变。按值传递參数时,须要在參数名前加"ByVal"keyword。
    2、按地址传递參数:
    按地址传递參数时,把实參变量的地址传送给被调用过程。形參实參共用内存的同一地址。在被调用过程中,形參的值一旦改变,对应实參的值也跟着改变。

    假设实參是一个常数或表达式,Visual Basic 6.0会按"传值"方式来处理,按地址传递不须要"ByVal"keyword[3] 

    3、按数组传递參数:
    在VB6.0中,同意使用数组作为实參传递到子过程的形參中,数组传递必须採用地址传递的方式来传递參数。

    数组參数在传递时应注意下面两个方面:

    ① 在实參和形參列表中仅仅写数组名。忽略维数的定义,但圆括号不能省,当数组作为參数传递时。系统将实參数组的起始地址传给过程,使形參数组也具有与实參数组同样的起始地址,若參数是多维数组,每维以逗号分隔;
    ② 被调过程可分别通过LboundUbound函数确定实參数组的下界上界
    遇到问题:
    如图片所看到的:

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

  • 相关阅读:
    Swift3.0_注释,警告,todo的写法
    linux下如何实现mysql数据库定时自动备份
    Weblogic 12c 集群环境搭建
    Weblogic 10.3.6.0 集群搭建
    VMware下Centos6.4安装
    Linux下安装maven和nexus
    hbase查询语法
    笔记本WiFi共享
    CentOS6.4安装JDK,卸载自带的OpenJDK
    Mysql设置允许外网访问
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5193736.html
Copyright © 2011-2022 走看看