← 2022 · 华为海思 笔试

推荐答案 测试一下

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

A. Dynamic arrays B. Associative arrays C. packed array D. 多维数组
单选题 中等 笔试真题单选

参考答案

正确答案:A。动态数组(Dynamic arrays)在声明后需要显式分配内存,使用 `new` 操作符指定数组大小(例如 `int dyn[]; dyn = new[10];`)。若未执行 `new` 直接访问动态数组,将导致编译或运行时错误。关联数组(Associative arrays)使用索引作为键,无需预先分配内存,可直接赋值(如 `int assoc[string]; assoc["a"] = 1;`)。打包数组(packed array)和多维数组(此处指固定大小的多维数组)在声明时即确定了维度与大小,由编译器自动分配存储空间,无需 `new`。易错点:混淆动态数组与关联数组的内存管理——动态数组必须 `new`,关联数组不需要;打包数组和多维数组(固定大小)是静态数组,也不需要 `new`。注意多维数组也可指动态数组中的多维(动态数组的嵌套),但本题中D选项未明确,通常理解为固定大小的多维数组。

涉及知识点

  • 动态数组需显式new分配内存
  • 关联数组无需new直接使用
  • packed array为静态编译期分配
  • 固定大小多维数组为静态数组
  • SystemVerilog数组分类与初始化
← 上一题
登录后反馈错题
下一题 →