我没有 C 或 C++ 的背景,所以静态数组让我有点困惑。它们是干什么用的?为什么要在堆栈上分配它们?
我想有一个性能优势。堆栈分配更快,不需要垃圾收集。但是为什么需要在编译时知道长度呢?你不能在运行时创建一个固定大小的数组并在堆栈上分配它吗?
D 中的动态数组或切片由包含指针和长度属性的结构表示。静态数组也一样吗?他们是如何代表的?
如果你将它们传递给一个函数,它们会被完整地复制(除非你使用 ref),这背后的基本原理是什么?
我意识到动态数组和切片在 D 中比静态数组更重要,这就是为什么文档不会长时间讨论它们的原因,但我仍然希望有更多的背景知识。我猜静态数组的特性与堆栈分配的工作方式有关。