共用体的使用

BASIC解释器的任务之一就是记住程序所使用的变量的值。BASIC提供了几种不同的类型,所以每个变量的值和他的类型必须一起存储.这里有一个结构,用于保存这些信息,但效率不高(占用空间大)

1 struct Var
2 {
3 enum {INT,FLOAT,STRING} type;
4 int int_value;
5 float float_value;
6 char *string_value;
7 };

当BASIC程序中的一个变量被创建时,解析器就创建这样的一个结构,并记录变量类型。然后根据变量的类型,把变量的值储存在这三个变量中的其中一个。

改进后的结构:

1 struct Var
2 {
3 enum {INT,FLOAT,STRING} type;
4 union{
5 int i;
6 float f;
7 char *s;
8 }value;
9 };

共用体中,这三个字段都储存于同一个位置,所以减少了内存空间的浪费。如果共用体成员的长度不同,共用体的长度是他最长成员的长度。

如果成员之间的长度差别较大,最好在共用体中存储指向成员的指针,减少内存浪费。

posted @ 2011-05-19 09:23  zendPger  Views(336)  Comments(0Edit  收藏  举报