← 2022 · 荣耀 笔试

推荐答案 测试一下

SystemVerilog中,下面那种数组在使用前需要先执行new操作。

A.动态数组 B.联合数组 C.多维数组 D.压缩数组
简答题 中等 笔试真题

参考答案

正确答案是A。动态数组(dynamic array)在使用前需要先执行new操作来分配存储空间,否则未初始化的动态数组大小为0,无法存储数据。联合数组(associative array)也称为关联数组或哈希数组,在插入新元素时自动分配空间,无需显式new。多维数组(multidimensional array)和压缩数组(packed array)在声明时就已经确定了维度大小和存储结构,因此不需要new。需要注意的是,动态数组的new操作可以指定大小,例如`int dyn[] = new[10];`,而联合数组的索引可以是任意类型,如`int assoc[string];`,直接赋值`assoc["key"] = 1;`即可。多维数组如`int arr[3][4];`,压缩数组如`bit [7:0] packed;`都在编译时确定大小。因此只有动态数组依赖运行时动态分配内存。

涉及知识点

  • 动态数组需要new分配空间
  • 联合数组自动分配空间
  • 多维数组声明时确定大小
  • 压缩数组编译时固定大小
  • SystemVerilog数组类型区别
← 上一题
登录后反馈错题
下一题 →