当前位置:编程学习 > VB >>

VB编程问题

有如下程序:

Option Base 1
Private Function FindMin(a() As Integer)
Dim Start As Integer
Dim Finish As Integer, i As Integer
Start = LBound(a)
Finish = UBound(a)
Min = a(Start)
For i = Start To Finish
If a(i) < Min Then Min = a(i)
Next i
FindMin = Min
End Function

Private Sub Command1_Click()
Dim arr1
Dim arr2(4) As Integer
arr1 = Array(Val(Text1.Text), Val(Text2.Text), Val(Text3.Text), Val(Text4.Text))

For i = 1 To 4
arr2(i) = CInt(arr1(i))
Next i
M = FindMin(arr2)
Print "最小值是: "; M
End Sub

问题:FindMin过程是一个数组,为什么在调用时用的是“M = FindMin(arr2)”而不是“M = FindMin(arr2(i))”呢?

追问:恩?什么是递归呀?
答案:  在VB6.0里,调用使用数组作为形参的函数时要使用数组名作为函数实参,因为数组变量存储的并不是数组本身,而是一种VB安全类型,也就是C语言里被称为结构体的数据结构,此结构体里的某一个成员才记录着数组元素的实际存储位置,也就是指针。

  对数组作下标引用操作时,如:arr(0),VB运行时在解释这条语句时,会自动处理arr变量的数据结构,访问此结构指针成员指向的第1个数组元素。也就是说,arr(0),表示arr数组的第一个绝对元素,代表一个具体值,不是arr变量本身,意识到数组类型的变量和数组元素类型不是一回事是很重要的。当数组作为函数实参传递时,函数要求的是整个数组,也就是arr变量存储的结构体,这样就可以通过VB内部的机制访问数组了。

  综上,在VB里,调用包含数组形参的函数时,数组实参要使用数组变量名传递。

FindMin这个函数作用和目的是传入一个数组,并找出数组中的最小值。

所以你在调用M = FindMin(arr2)的时候,传入的参数应该是一个数组。

arr2(i)则之代表一个数。必须传入arr2才能表示传入的是一个数组。

Private Function FindMin(a() As Integer) 这一句中定义传入的参数是什么类型,调用时就要传入什么类型。

因为这段代码是递归所以不用“M = FindMin(arr2(i))”

FindMin的参数是一个数组,而不是什么“FindMin过程是一个数组”

Private Function FindMin(a() As Integer)的意思是函数FindMin的参数是一个整数型的数组,传入的时候自然是要把整个数组作为一个整体传入。arr2(i)只是数组中的一个元素。

有些基本概念和规则你要理解一下

上一个:VB编程问题
下一个:VB编程问题

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,