VB中数组元素做实参的问题

2025-02-24 02:08:08
推荐回答(2个)
回答1:

Array函数返回的数组是Variant型的,而你pstring函数的参数是指定为Integer型的,所以就会提示类型不符了。因为Variant型是一种特殊的数据类型,它含有附加信息以指定变量的实际类型,所以它是不能和其他显式指定的数据类型共用内存地址的,换句话说就是在传址方式中形参为指定数据类型(如Integer、Double等)的情况下,实参是不能用Variant型的。Val()函数把a数组的元素转换为数值型,准确说是Double型,而Double型和Integer型VB会自动转换的,所以这样就没错。

回答2:

你的问题和参数传递方式无关,是数据类型的问题。

Array返回的数组元素,其数据类型是变体(Variant)类型,VB无法把它自动进行类型转换;
当强制使用Val函数后,把变体类型转换成了数字,才能和Sub pstring(x As Integer)中的x匹配。