数组

数组相关

1 概述

  1. 表示了一组特定类型数量固定的变量(元素)。
  2. 数组的元素总是按照先后顺序存储在连续的内存块里,读取效率高。
  3. 所有是数组都继承于 System.Array 类。
  4. 数组元素访问从 0 开始。

2 数组定义与初始化

2.1 一维数组

int[] arr1 = new int[3];  // 之后需要逐个赋值
int[] arr2 = new int[3] {1, 2, 3};
int[] arr2 = new int[] {1, 2, 3};
int[] arr3 = {1, 2, 3};

2.2 多维数组

2.2.1 矩形数组

矩形数组代表 n 维的内存块,每行的元素个数是一样的。

  1. 定义好数组的行数和列数,逐个赋值:

    // int[, ] arrayName = new int[numRows, numCols];
    int[, ] arr1 = new int[2, 3];
    for (int i = 0; i < arr.GetLength(0); i++)
    {
        for (int j = 0; j < arr.GetLength(1); j++)
        {
            arr[i, j] = i + j;
        }
    }
    
  2. 分行给二维数组赋值:

    int[, ] arr = new int[2, 3]{ {1, 2, 3}, {4, 5, 6} };
    // 可简写为 int[, ] arr = { {1, 2, 3}, {2, 4, 6} };
    for (int i = 0; i < arr.GetLength(0); i++)
    {
        for (int j = 0; j < arr.GetLength(1); j++)
        {
            Console.Write(arr[i, j]);
            Console.Write("\t");
        }
        Console.WriteLine();
    }
    /* 输出:
    1    2    3
    4    5    6
    */
    

🍂 使用 GetLength(int dimension) 获取数组指定维度的长度。

2.2.2 交叉数组

交叉数组是元素类型为数组的数组,以二维数组为例,矩形数组每行的列数是一样的,交叉数组则不一样。

// int[][] arrayName = new int[numRows][];
int[][] arr = new int[3][];  // arr 可以看成一个数组,arr 的每一个元素也都是数组
// 分别对 arr 的每个元素赋值,每个元素都是一维数组,初始化方法同上
arr[0] = new int[1];
arr[1] = new int[2];
arr[2] = new int[3];
for (int i = 0; i < arr.Length; i++)
{
    for (int j = 0; j < arr[i].Length; j++)
    {
        Console.Write(arr[i][j]);
        Console.Write("\t");
    }
    Console.WriteLine();
}
/* 输出:
0
0    0
0    0    0
*/

2.2.3 辨析 int[][] 和 int[, ]

  1. C# 中

    • int[][] 是交叉数组,在定义数组时必须指定数组的行数,而不必指定列数。
    • int[, ] 是矩形数组,数组的行数和列数都是固定的,在定义数组是必须指定行数和列数。
  2. C++ 中
    C++ 没有 int[, ] 的形式,也没有交叉数组的定义,C++ 中,int[][] 就是二维数组,在 C++定义并初始化二维数组:

    int a[2][3] = { {1, 2, 3}, {4, 5, 6} };
    int a[2][3] = {1, 2, 3, 4, 5, 6};  // 系统按数组排列的顺序对各元素赋初值
    int a[2][3] = { {1}, {4, 5} };  // 只对部分元素初始化
    int a[][3] = {1, 2, 3, 4, 5, 6};  // 第一维的长度可以省略,但必须指定第二维的长度,以此系统计算出第一维的长度
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值