|
发表于 2007-5-11 01:40:29
|
显示全部楼层
数组应该不容易作为参数.
数组的长度不是固定的.开始声明数组时是没有数组长度信息的.
对于一个struct,内部数据的数量是己知的,做为参数时,只须枚举出来,再生成一个函数就可以了.
比如:- struct S
- integer a
- integer b
- endstruct
- function test takes S s returns nothing
- DoNothing()
- endfunction
复制代码 最后会变成:- function test takes integer s_a,integer s_b returns nothing
- DoNothing()
- endfunction
复制代码 如果struct里面还有struct,也是再枚举一次就可以了.而对于数组,是不可行的.最大的问题就是长度是不知道的.因为初始化语句里有这样的东西:- globals
- unit array a
- endglobals
- function InitGlobals takes nothing returns nothing
-     local integer i= 0
-     set i = 0
-     loop
-         exitwhen ( i > 210)
-         set udg_a[i]=false
-         set i = i + 1
-     endloop
- endfunction
- function main takes nothing returns nothing
-   //..............................................................
-       call InitGlobals()
- //................................................................
-   endfunction
复制代码 如此说来,至少在main函数执行时,才能知道数组的大小.而这个数组大小是不是可以改变,我没有研究过.
如果能改变的话,那么内存会是动态分配的,结果就是数组的地址都不是连续的,或是数组的首指针都是变化的. |
|