D语言数组

D语言数组C数组有几个可以被纠正的缺点:数组本身并不带有数组结构的信息,它们必须另外存储和传递

一个经典的例子就是传递给 main(int argc, char *argv) 函数的 argc 和 argv 参数

(在 D 中,main 被声明为 main(char args)

)数组不是一等公民

当一个数组被传递给函数时,他被转换为指针,尽管那个原型令人迷惑地声称它是一个数组

当发生类型转换时,所有的数组类型信息也就丢失了

C数组的大小不可改变

这意味着即使最简单的聚集如堆栈都必须用一个复杂的类构造

C数组没有边界检查,因为它们根本不知道数组边界是多少

数组声明中的 位于标志符之后

这使得声明如一个指向数组的指针这样的东西都需要复杂难懂语法:int (*array);在 D 中,数组的 位于左侧:int *array; // 声明了一个指向含有 3 个 int 的数组的指针long func(int x); // 声明了一个返回含有 long 数据的数组显然这更易于理解

D数组有四种变体:指针、静态数组、动态数组和关联数组

以上内容由大学时代综合整理自互联网,实际情况请以官方资料为准。

相关