« Javaeye社区中还有几篇帖子没看完 | (回到Blog入口) | MovableType 忘记了口令 »

D语言数组的初始化与赋值

/*
这几天开始使用D语言做开发, 刚开始写代码就遇到问题。定义的2维数组总是不能正确初始化和赋值。
为此,我单独写了段小程序来尝试如何使用D语言的2维数组。

代码如下(要复制并编译执行此代码,请使用utf-8格式保存文件):
*/

import std.stdio;

void print_array(int[2][] v)
{
foreach(inout t;v)
{
writefln(":",t.length," 1:", t[0..2]);
}
writefln("----------------");
}

int main(char[][] args)
{
// D语言数组初始化赋值
int[2][5] chess = [1,2,3,4,5,6,7,8,9,10];

// int[2][5] chess = [[1,2],[3,4],[5,6],[7,8],[9, 10]]; //错误,

print_array(chess);

// D语言数组整体赋值的方法
chess[] = [3,2]; // 把所有的元素赋值为 [3,2]

// chess[] = [3]; // 错误

print_array(chess);

// D语言数组支持的切片特性
chess[1..2] = [4,4];

print_array(chess);

// chess[1..3] = [5,5,6,6]; // 错误
chess[1..3] = [5,5];
print_array(chess);

// 注意: D语言数组与 C语言数组的差别:
// D语言多维数组在定义时 int[2][5] ,中的后一个为最外层数组的大小,这一点是D语言数组在使用时需要特别注意的地方
// 在 D语言规范中,有明确的说明: Arrays
/*
int[] a; // dynamic array of ints
int[4][3] b; // array of 3 arrays of 4 ints each
int[][5] c; // array of 5 dynamic arrays of ints.
int*[]*[3] d; // array of 3 pointers to dynamic arrays of pointers to ints
int[]* e; // pointer to dynamic array of ints
*/
// D语言数组在使用时, chess[a][b] 中的 a 为最外层数组下标, 使用习惯遵循 C/C++ 的数组使用习惯
chess[2][1] = 100;

print_array(chess);

return 0;
}

// 输出结果为 :
/*
:2 1:[1,2]
:2 1:[3,4]
:2 1:[5,6]
:2 1:[7,8]
:2 1:[9,10]
----------------
:2 1:[3,2]
:2 1:[3,2]
:2 1:[3,2]
:2 1:[3,2]
:2 1:[3,2]
----------------
:2 1:[3,2]
:2 1:[4,4]
:2 1:[3,2]
:2 1:[3,2]
:2 1:[3,2]
----------------
:2 1:[3,2]
:2 1:[5,5]
:2 1:[5,5]
:2 1:[3,2]
:2 1:[3,2]
----------------
:2 1:[3,2]
:2 1:[5,5]
:2 1:[5,100]
:2 1:[3,2]
:2 1:[3,2]
----------------
*/

引用通告

TrackBack URL for this entry:
如果您想引用这篇文章到您的Blog,
请复制下面的链接,并放置到您发表文章的相应界面中。
http://www.pyapp.com/cgi-bin/mt/mt-tb.cgi/24

发表一个评论

(如果你此前从未在此 Blog 上发表过评论,则你的评论必须在 Blog 主人验证后才能显示,请你耐心等候。)

关于

此页面包含了发表于2007年04月22日 夜间02时00分的 Blog 上的单篇日记。

此 Blog 的前一篇日记是 Javaeye社区中还有几篇帖子没看完

此 Blog 的后一篇日记是 MovableType 忘记了口令

更多信息可在 主索引 页和 归档 页看到。

Powered by
Movable Type 3.33