Print This Page

D语言数组(2)

News

Google
2008-03-03
Category: 更新(update)
Posted by: 刘策(yayv)
2007-04-24
Category: 更新(update)
Posted by: 刘策(yayv)
新设栏目 D语言高级教程 , 并转贴一篇 深入分析D语言接口与COM接口的关系 精华文章
2007-04-24
Category: 更新(update)
Posted by: 刘策(yayv)
新增2篇文章,均是对D语言数组进行探索的。一篇主要探索D语言数组长度修改时产生的影响, 另一篇主要探索D语言数组在多维的情况下如何初始化。


作者: 刘策(yayv)  



/*
这几天开始使用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语言规范中,有明确的说明: <a href="http://www.digitalmars.com/d/arrays.html"> Arrays</a>
    /*
    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]
----------------
*/

Previous page: D语言数组
Next page: D语言高级教程