各位老师:
麻烦大家了,我研究程序,遇到了问题。
DB块中对于STRUCT的解释
此菜单命令可在详细变量视图的"数据类型"列的激活单元格中插入关键字STRUCT,以将变量声明为结构。
结构是可最多嵌套8层的复杂数据类型。结构的元素可以是基本数据类型或复杂数据类型。STRUCT数据类型必须由STRUCT和END_STRUCT之间的一个或多个元素组成。结构内包含的结构仅视为一个元素。
对于ARRAY的解释
此菜单命令可在详细变量视图的"数据类型"列的激活单元格中插入关键字ARRAY,以将变量声明为数组。在方括号内输入数组的长度值,例如[1..10]。在自动创建的第二行中为元素设置数据类型。
数组是数据类型(基本型或复合型)的*组合。
实例:"ARRAY [1..2,1..3] OF INT"定义格式为2 x 3的整数数组。
可通过索引("[m,n]")访问数据,但必须遵守1<=m<=2且1<=n<=3的规则。
最多可以声明6维数组。索引可以是任意整数值。在声明中,必须设置ARRAY限制,从而使ARRAY可最多包括65535个元素。维度的上限值必须大于下限值。
那么,我想解释一下下图中的结构,希望大家能指出我的错误和不足之处。
结构STRUCT的名称为MSG的开始地址150.0,结束地址230.0 。
其中包括ARRAY[1,20],这个数组中包括20个结构,每个结构包含1BYTE的INDEX,1个BOOL的is_active和1个BOOL的is_gone,每个结构占用两个字节,至于剩下的1.2至1.7不用。这样总共就占用了40个字节。
到了下一个地址ARRAY其实地址就是40.0了,由于处于MSG的总结构中,所以,它的起始地址就是190.0。它包含20个结构,每个结构包含1个BOOL地址,占用两个字节,剩余的0.1至1.7不用。这样共占用40个字节。
这些进行完了,又占用了40个字节,所以STRUCT的MSG的最后地址就是150.0+80.0=230.0 。
从230.0开始进入下一个STRUCT,只占用两个字节,最终结构STRUCT结束,末尾地址232.0 。

谢谢!