VB一个选择题!!!需要高手解决下!

来源:百度知道 编辑:UC知道 时间:2024/09/27 11:43:22
使用调用程序private sub fun1(st as string)和private sub fun2(a() as string*6) ,在调用程序过程中使用了dim st(6) as string*6,请问下面哪写调用过程是正确的:
1.fun1(st(3)) 2.fun1(st) 3.fun2(st) 4.fun2(st(6))

我的问题在这里:对于实形参数传递的话,如果是地址传递的话类型必须一样,比如说fun2,既然st(6)的6个数组已经设置为了定长字符串了,那为什么fun2(st(6))是错的呢?数据因该保持一致呀~还有其他选项目,搞的我混淆了!!!希望高手把实形参数传递这块的这个问题分析的透彻点!

答案应该是1和3

首先要清楚,fun1函数的形参是字符串,而

fun2函数的形参是元素为定长的字符串的数

组。st()也是个定长字符串型数组。在实形结

合的时候,不能搞混了

选项1:st(3)是指数组st里面的第四个元

素,既然是元素,它就是个字符串。而fun1的

形参就是字符串,所以满足

选项2:st是数组,而fun1形参是字符串,自

然不行了

选项3:st是元素字符串长度为6的数组,而

fun2的形参也是元素长度为6的字符串型数组a

(),当然可以结合了

选项4:st(6)是元素字符串不是数组,所以

错了

1.fun1(st(3)) 2.fun1(st) 3.fun2(st) 4.fun2(st(6))

个人认为,1与3是正确的

st是一个数组,而ST(3)是一个具体值
传递时类型要一致,
所以第一个fun1(st(3))传递的是一个值,与函数要求一致
第二个则在fun1中传递的是数组,所以错

第三个是对的
第四个是要求是传数组的,结果传值--- st(6)为一个值---- 过去就错了.

你的问题在于,没有搞清 st 是数组, st(X)是值