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数组有四种变体:指针、静态数组、动态数组和关联数组
以上内容由大学时代综合整理自互联网,实际情况请以官方资料为准。