【问题标题】:What is void[]?什么是空[]?
【发布时间】:2014-12-09 18:24:38
【问题描述】:

我在 D 文档和函数签名中的一些地方看到了 void[] 类型。什么意思?

我已经搜索了文档中的数组部分以及谷歌,但没有找到任何结论。我发现所有数组都可以隐式转换为 void[] 类型。它只是一个无类型数组吗?

【问题讨论】:

    标签: d


    【解决方案1】:

    void[] 只是一个数组。 in void[] 是一个方便的签名,用于仅将字节写入文件或其他内容的函数,因为它可以接受任何类型的数组 - void 表示类型不重要,in 表示您不打算修改或存储它,因此您也可以接受 const 或不可变数组。

    要使用void[],您必须首先将其转换为其他东西,通常是ubyte[],因此元素具有允许您对其进行索引的具体大小。 void[].length 以数组中的总字节数给出,因此如果您只是将指针和数据长度传递给函数(如操作系统级别的文件写入,例如 Linux 的 write 系统调用),则传递 @987654329 @ 将写入这些字节而不关心它们代表什么。

    【讨论】:

    • 我还应该提到您可能会看到的另一种 void:void*,这意味着指向任何东西的指针。 void* 在 C 中很常见,void[] 在 D 中用于相同类型的事物(还有一点,C 在某些地方使用 void* D 也会使用模板或类/接口——用于通用数据。)@ 987654333@ 也可以在 D 中使用,有时可以看到与 TypeInfo 参数配对,允许运行时泛型。模板通常更好,但 D 运行时库的某些部分使用 void* + TypeInfo 对(主要是出于历史原因)。所以你可能会在那里看到它。
    猜你喜欢
    • 2011-05-19
    • 2011-01-17
    • 2021-12-18
    • 2014-04-29
    • 2012-04-03
    • 2010-11-19
    • 2011-03-23
    相关资源
    最近更新 更多