数据结构与程序架构(六)

我们知道,对于一个数据流图来说,我们需要知道它的处理单元间传递的数据类型,否则我们不一定能清晰地理解它的功能和处理过程,那么如何描述一个数据类型呢?
在绝大多数高级编程语言中,数据类型都是以树的形式进行描述的,比如以C语言为例,它的数据类型定义的代码如下:

struct type1 {

int     field1;

short   field2[2];

void *  field3;

...

};

struct type2 {

char   field1[200];

type1  field2;

...

};

观察上面的类型定义可以发现,每一个数据类型都由若干个field 组成,而每一个 field有2个显式属性和1个隐式属性,即“类型”、“名称”和“大小”,因此,每一个数据类型都可以用一个 (type, name, size) 三元项的list来描述,例如:

type1的描述:

( int, field1, sizeof(field1) )

( short, field2, sizeof(field2) )

( void *, field3, sizeof(field3) )

...

type2 的描述:

( char, field1, sizeof(field1) )

( type1, field2, sizeof(field2) )

...

同时,每一个数据类型都有自己的名字,而且不难发现,如果一个数据类型(type1)是另一个数据类型(type2)的子类型,则充当子类型的数据类型必须放在前面,所以我们可以用一个 (name, field-list) 二元项的有序 list 来描述任意的数据类型集,例如:

( type1, field-listof(type1) )

( type2, field-listof(type2) )

其中field-listof()是一个借记符,表示field的list

另外,由于每一个field都是有大小的,显然,每一个数据类型也是有大小的,其大小就等于各个field大小的和。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值