参数传递是什么?参数传递的是什么?

简介: 避免代码冗长,防止代码的仿佛书写。前面的博客中有说明,这里不做过多赘述

过程是什么?


执行一段相同的程序代码


有哪些过程?


Sub

Function

子程序

函数

Call语句调用

Call语句调用

没有返回值

有返回值


为什么要使用过程呢?有哪些好处?

避免代码冗长,防止代码的仿佛书写。前面的博客中有说明,这里不做过多赘述


Sub过程和Function过程分别的语法格式是怎样的?


[Private|Public][Static] Sub <过程名> ([参数表])
          过程体
          [Exit Sub]
End Sub


[Private|Public|Static] Function 函数名([参数表] [AS类型])
      [函数体]
      [<函数名>=<表达式>]
      [Exit Function]
End Function


说明:

过程必须遵守“先说明,后调用”的原则,声明过程就是编写一个能够实现预期功能的程序段,可被重复调用。


过程名的命名规则与变量相同,过程名必须唯一,不得超过255个字符


参数表是用来指明调用该Sub过程时需要传递给该过程的参数及类型,参数表内的参数又称形式参数(简称形参)。可以没有形参,也可以有一个或多个形参。


形参的的命名规则与变量相同,形参具有数据类型,如果省略“AS 类型”不说明类型,默认为Variant型


形参本身是一个名字,它是占用内存空间的,只有在被函数调用了之后才参与运算、赋值,占用内存空间


函数参数表中的参数,叫形参,调用函数时给的值,叫实参

什么是参数的传递?


调用过程时实参将参数值传递给相应的形参,然后在过程中实现对数据处理和返回结果的过程


参数传递有哪些规则呢?

个数相等、数据类型相容、顺序一致


如果传递参数数据类型不匹配会怎么样?


举例:如下代码中


20200514114128678.png


当程序运行时就会报错:


20200514114128557.png


原因:实参和形参的数据类型不匹配,


说明:再定义的max过程中,形参m、n对应的为Integer(整型)的数据类型,他的范围是正整数、负整数或者0,


而在调用max这个过程中,实参d、c在定义时的数据类型为Single(单精度型),范围为带有小数的实数,


它们数据类型包含的范围不同,就好比,我要装一个大西瓜,你却给我一个小碗,那个小碗能放的下一个大西瓜吗?答案绝对是不可以的。


参数传递传的是什么?


可以传常量、变量、表达式计算的结果、数组。这就和接下来要讲的的传递方式有关了


有哪几种传递方式?


按地址传递(ByVal)


当调用时,系统将实参的值送给形参,形参接收到了值之后就断开了联系。在过程体内对形参的任何操作不会影响到实参


如:我有一本书,通过小明借给了小李,小李实际拿到的是我书的复印本,不管小李怎么修改这本书,对我都是没有影响的


实例:


20200514114128642.png


执行结果如图:


20200514114128612.png


按地址传递(ByRef,默认)


当调用时,将实参的地址传递给形参,实参和形参共享存储单元,在过程体中对形参的任何操作都变成了相应实参的操作


如:实参有一本书,把这本书给了形参,给的不是复印件,而是装这本书的房间钥匙,实参和形参都可以共享它,因为它们都有储存这本书的钥匙,有地址可以使用它,形参拿到这本书可以随意修改,修的就是原稿


实例:


'''''''''''''''''
'输出X的值
Private Sub Command1_Click()
    Dim x As Integer
    x = 6
    Call test(x)
    Print "    sub   ̺ x="; x
End Sub
Sub test(ByRef m As Integer)
    m = m + 5
End Sub


20200514114128619.png

相关文章
|
3天前
|
存储 弹性计算 运维
有返回值的函数
【4月更文挑战第29天】
8 1
|
2月前
|
程序员 C语言 Python
函数—C(上)
函数—C(上)
27 0
|
9月前
|
C语言
C语言知识点之 函数2
C语言知识点之 函数2
31 0
|
9月前
|
算法 编译器 程序员
|
5月前
|
编译器 C语言
对函数的剖析一
对函数的剖析一
11 0
|
5月前
|
机器学习/深度学习
函数的使用
任务1 统计小组一门课程的总分及平均分。
28 1
|
5月前
|
存储 编译器
函数(下)
函数(下)
60 0
|
10月前
|
编译器 C语言
C 中的函数
C 中的函数
|
11月前
基本初等函数 对数函数
基本初等函数 对数函数
54 0
|
12月前
|
算法 编译器 API
8.函数
8.函数
54 0