![](https://userblink.csdnimg.cn/20210513/m0_56180868/pic/29001110e2539d9c9ecdd713bec59f8f-0.jpg)
![](https://userblink.csdnimg.cn/20210513/m0_56180868/pic/feb50d46e23c482efe15e4b781eab4a4-1.jpg)
![](https://userblink.csdnimg.cn/20210513/m0_56180868/pic/91025b0f991289527ba94afc583880f9-2.jpg)
![](https://userblink.csdnimg.cn/20210513/m0_56180868/pic/5fbfee5e05957a153305335fc95fdfbe-3.jpg)
![](https://userblink.csdnimg.cn/20210513/m0_56180868/pic/baadeb501713001296a7f3cde6bf4166-4.jpg)
第17题:ByVal是值传递,就是说a传进f函数的是自己的克隆,和a本身没关系,因此a的值不变,仍=3。ByRef是引用传递,就是说b传进f函数的是自己,因此b的值在f函数中发生了改变,b=t=a=3,因此b=3。
第7题:在redim使用过程中,如果要保留数组中的数据,需要使用Preserve关键字,如果不加该关键字,会清空原来的数据。题目中没有Preserve关键字,因此清空了原来的数据,并重新建立了一个下标最大=3数组,数组的下标是从0开始算的,因此是0/1/2/3一共4个元素,因为没有赋值,4个元素都是0。
第11题:这题很简单,计算步骤为:第1步,令i=1。第2步,令a=a+1,不用管它是多少。第3步,exit for的意思是退出for循环。因此,这个程序到第3步就结束了,那么当程序结束的时候,由于第1步的关系,最终的i=1。
第12题:这题也很简单,记住:在sub里新定义的变量,只存在于sub内。因此,无论Sub g()执行了多少次,改变的都是sub里的a的值。而程序本身的a,始终等于第1行的赋值,也就是Dim a As Integer=1,这句话就是定义a=1的意思。
第14题:Dim a(7) as Integer的意思怎么理解呢?首先,“Dim a(7)” 的意思是,定义一个下标最大为7的数组,而数组的下标是从0开始数的,因此是0/1/2/3/4/5/6/7一共8个元素。其次,as Integer的意思是,所定义的数组是Integer类型的,Integer类型就是整数型。最后,综合以上2步计算这个数组的大小,因为数组有8个元素,每个元素都是整数型(再讲一个知识点:1个整数型=4字节,这个记住就好),因此内存中一共分配了8x4=32字节。