返回介绍

4.9 联合数组

发布于 2020-09-09 22:55:45 字数 809 浏览 1100 评论 0 收藏 0

对于处理成员数目会动态改变的连续变量集合而言,动态数组非常有用。然而,当集合的尺寸是未知的或者数据空间紧缺的时候,联合数组则是更好的选择。联合数组在使用之前不会分配任何存储空间,并且索引表达式不再被限制成integral表达式,而是可以具有任何数据类型。

联合数组实现了一个所声明类型的元素的查找表。用作索引的数据类型作为查找表的查找键值,并强制了一种顺序。

联合数组的声明语法如下:

data_type array_id [index_type];

其中:

  • data_type是数组元素的数据类型。固定尺寸数组可以使用的任何类型都可以作为联合数组的数据类型。
  • array_id是联合数组的名字。
  • index_type是用作索引的数据类型, 或者是*。如果指定了*,那么数组可以使用任意尺寸的integral表达式来索引。采用数据类型作为索引的联合数组将索引表达式限制成一个特定的数据类型。

联合数组声明的例子如下:

integer i_array[*];         // 整数联合数组(未指定索引)
bit [20:0] array_b[string]; // 21位向量的联合数组,使用字符串类型作为索引
event ev_array[myClass];    // 事件类型的联合数组,使用类myClass索引

联合数组的元素被动态地分配;一个条目在它第一次写入的时候产生。联合数组维护已经被赋值的条目并根据索引数据类型维护相对顺序。联合数组元素是非压缩的,也就是说,除了拷贝或比较数组之外,当联合数组在大多数表达式中使用之前,你必须从数组中选择单独的元素。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文