arrays - 如何为可变大小的数组创建固定的结构头

标签 arrays string struct d

我希望在 D 编程语言中为可变大小的数组创建一个固定大小的结构头。在“C”中,将放置一个零长度或空括号数组作为在固定结构头中声明的最后一项,并且然后调整对 Malloc 的调用,以包括数据结构的可变大小部分所需的额外存储,最后一个声明将引用谁的第一个元素。

但在 D 语言中,数组是一个更高级的对象,当我试图构建一组结构化操作码字符串时,我真的想表达一个复合结构,它带有尾随内存引用,因为它是最终项目 (后面的数组的第一个元素..

在使用 D 编程语言时,如何声明/创建/使用复合可变长度内存结构?

最佳答案

这与你在 c 中的完全相同

struct VarArray(T){
uint length;
T[0] t;

static VarArray!T* allocate(T)(uint length){
VarArray!T* ret = enforce(malloc((VarArray!T).sizeof+T.sizeof*length));
*ret.length=length;
return ret;
}

}

检查 http://dlang.org/arrays.html#static-arrays :

A static array with a dimension of 0 is allowed, but no space is allocated for it. It's useful as the last member of a variable length struct, or as the degenerate case of a template expansion.

关于arrays - 如何为可变大小的数组创建固定的结构头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9676481/

相关文章:

c++ - 在 C++ 中返回一个数组

C - 高效编码字符串生成算法

string - Lisp - 显示要列出的字符串

c - 将数组中的值分配给结构数组

javascript - 按间隔对对象数组进行分组

javascript - 按每个对象具有的属性对对象数组进行排序时出现异常结果

Python Array 是只读的,不能追加值

Java 字符串与 StringBuilder

c++ - 如何在 C++ 中初始化需要参数的结构数组

c - 使用结构的邮政编码