-唐老狮-C#基础 数组笔记

一维数组

同一变量类型的数据集合,所有的变量类型都可以申明为数组

申明数组

//先申明,后面需要实例化
int[] arr1;
int[] arr2 = new int[5];
//下列三种都可以直接实例化,{}中不填值就为空
int[] arr3 = new int[5]{1, 2, 3, 4, 5};
int[] arr4 = new int[]{1, 2, 3, 4, 5};
int[] arr5 = {1, 2, 3, 4, 5};

bool[] arr6 = {true, true};    //后面的项必须要符合[]前定义的类型

返回数值等于数组长度:array.Length

查找对应下标的元素(数组的索引/下标从0开始,等差递增数列,差值为1):array[<index>]

修改数组元素:array[<index>] = 要赋予的值;

int[] array = {0,1,2};
Console.WriteLine(array.Length);
Console.WriteLine(array[0]);
array[0] = 99;
Console.WriteLine(array[0]);
//output
//3
//0
//99

通过for语句遍历数组,快速获取数组中每一个元素的值

for(int i = 0; i < array.Length; i++)
{
    Console.WriteLine(array[i]);
}

增加/删除数组的元素:因为数组被创建时就锁定了内存空间大小,所以要搬家

int[] array = {0,1,2};
//增加元素
int array2 = new int[5];
for(int i = 0; i < array.Length; i++)
{
    array2[i] = array[i];
}
array = array2;    //实际上是让array用array2的内存地址
//多出来的两位为0
//array = array2 = {0, 1, 2, 0, 0} 

//减少元素
int array3 = new int[2];
for(int i = 0; i < array3.Length; i++)
{
    array3[i] = array[i];
}
array = array3;

查找数组中的元素对应的索引位置/下标:用for+if语句

//找元素2的索引位置/下标
int[] array = {0, 1, 2};
for(int i = 0; i < array.Length; i++)
{
    if(array[i] == 2)
    {
        Console.WriteLine("元素2的索引位置是{0}", i);
    }
}

二维数组

二维数组是使用两个下标(索引)来确定元素的数组,”两个下标“可以理解为行标和列标

二维数组如何存储数据:二维数据有 i 行 j 列,第 0 行的 j 个变量先存储,接着是第 1 行的 j 个变量……一直到第 i 行,e.g. 2 行 4 列数组[2, 4]对应存储顺序的元素下标为[0,0] [0,1] [0,2] [0,3] [1,0] [1,1] [1,2] [1,3]

申明二维数组

int[,] arr1;
int[,] arr2 = new int[2,3]; //二行三列数组
int[,] arr3 = new int[2,3]{{0, 1, 2}, {3, 4, 5}};   //和下面一样实例化比较直观
int[,] arr4 = new int[,]{{0, 1, 2}, 
                         {3, 4, 5}};
int[,] arr5 = {{0, 1, 2}, 
               {3, 4, 5}};

 获取二维数组的长度及元素,注意元素的下标从0开始计数(行和列都是),如果越界会报错System.IndexOutOfRangeReception:

int[,] array = {{1, 2, 3}, 
                {4, 5, 6}};
//得到行数
Console.WriteLine(array.GetLength(0));
//得到列数
Console.WriteLine(array.GetLength(1));
//获取元素
Console.WriteLine(array[0, 1]);
Console.WriteLine(array[1, 2]);
//output
//2
//3
//2
//6

修改元素

array[0, 1] = 99;

遍历二维数组,用两层for循环

 for(int i = 0; i < array.GetLength(0); i ++)
{
    for(int j = 0; j < array.GetLength(1); j ++)
    {
        Console.WriteLine(array[i, j]);
    }
}
//output
//1
//99 //上面改过了
//3
//4
//5
//6

增加/删除数组的元素:申明并初始化数组后,就不能增加/减少元素了,同样要使用搬家

int[,] array2 = new int [3, 3]
for(int i = 0; i < array.GetLength(0); i ++)
{
    for(int j = 0; j < array.GetLength(1); j ++)
    {
        array2[i, j] = array[i, j]);
    }
}
array = array2;    //实际上是让array用array2的内存地址
//增加的一行要一个一个更改
array[2, 0] = 7;
array[2, 1] = 8;
array[2, 2] = 9;

查找元素所在位置:同一维数组,使用两层for语句遍历

交错数组

数组的数组,每个维度的数量可以不同,二维数组的每行列数相同,交错数组每行的列数可能不同

申明数组

int[][] arr1;
//变量类型 [][] 交错数组名 = new 变量类型[行数][];
int[][] arr2 = new int[3][];    //行数可以写,列不能写会报错
//变量类型 [][] 交错数组名 = new 变量类型[行数][]{一维数组1, 一维数组2, ……};
int[][] arr3 = new int[3][]{new int[]{1,2,3}, 
                            new int[]{1,2},
                            new int[]{1}};
//变量类型 [][] 交错数组名 = {一维数组1, 一维数组2, ……};
int[][] arr4 = {new int[]{1,2,3}, 
                new int[]{1,2},
                new int[]{1}};

获取长度,获取元素,修改元素

int[][] array = {new int[]{1, 2, 3},
                 new int[]{4, 5}};
//获取行数
Console.WriteLine(array.GetLength(0));
//获得某一行的列数
Console.WriteLine(array[0].Length);
Console.WriteLine(array[1].Length);
//获得交错数组中的元素,注意不要越界
Console.WriteLine(array[0][1]);
//修改元素
array[0][1] = 99;
Console.WriteLine(array[0][1]);
//output
//2
//3
//2
//2
//99

遍历交错数组

for(int i = 0; i < array.GetLength(0); i ++)
{
    for(int j = 0; j < array[i].Length; j ++)
    {
        Console.Write(array[i][j]+" ");    //在控制台的一行内打出数组某行的所有元素,中间空一格
    }
    Console.WriteLine();
}

增删查同上方法

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值