Visual Studio中的二维数组和交错数组

目录

一、二维数组

1.定义

2.语法

3.特点

4.使用示例

5.注意事项

二、交错数组

1.定义

2.语法

3.特点

4.使用示例

5.注意事项

三、关键对比

四、选择指南

使用场景

示例场景


一、二维数组

1.定义

++矩形结构的数组,所有行长度相同,内存中连续存储。++

2.语法

++type, arrayName = new typerows,columns;++

3.特点

**固定结构:**行列数在初始化时确定,不可动态调整。

**连续内存:**所有元素按行优先顺序存储在连续内存块中。

**性能优化:**访问速度快,适合矩阵运算等场景。

4.使用示例

//初始化一个3行2列的二维数组

int, matrix = new int3,2{ {1,2} ,{3,4} ,{5,6} };

//访问元素(行索引,列索引)

int value = matrix1,0; //结果:3

//遍历二维数组

for(int i = 0; i < matrix.GetLength(0); i++ ) //行

{

for(int j = 0; j < matrix.GetLength(1); j++ ) //列

{

Console.Write(matrixi ,j + " ");

}

Console.WriteLine("");

}

5.注意事项

++必须同时指定行数和列数,无法单独调整某一行的长度。++

内存占用固定,即使部分行未使用也会占用全部空间。

二、交错数组

1.定义

++数组的数组,每行长度可不同,内存中分散存储。++

2.语法

++type\[\]\[\] arrayName = new typerows\[\];++

3.特点

动态灵活:每行可独立初始化不同长度,甚至为null。

分散内存:每行作为独立数组存储,仅存储行的引用。

空间高效:适合行长度差异大的场景(如稀疏矩阵)。

4.使用示例

//初始化一个3行的交错数组(行长度可变)

int\[\]\[\] jaggedArray = new int3\[\];

jaggedArray0 = new int\[\]{ 1, 2 }; //第1行:2列

jaggedArray1 = new int\[\]{ 3, 4, 5 }; //第2行:3列

jaggedArray2 = new int\[\]{ 6 }; //第3行:1列

//访问元素(行索引)列索引

int value = jaggedArray12; //结果:5

//遍历交错数组

foreach(int\[\] row in jaggedArray)

{

if( row != null )

{

Console.Write(element + "");

}

Console.WriteLine("");

}

5.注意事项

++需要先初始化外层数组(行数),再单独初始化每行。++

访问时需要检查行是否为null,避免NullReferenceException.

三、关键对比

|----------|------------------------|-----------------------|
| 对比维度 | 二维数组 | 交错数组 |
| 内存结构 | 连续矩形块 | 分散的数组引用 |
| 行长度 | 固定,所有行长度相同 | 可变,每行可独立设置 |
| 初始化 | 需要同时指定行列数 | 先指定行数,再逐行初始化 |
| 访问性能 | 更快(连续内存,缓存友好) | 稍慢(需要两次指针跳转) |
| 空间效率 | 固定占用rows✖columns空间 | 仅占用实际元素空间(适合稀疏数据) |

四、选择指南

使用场景

  • 用二维数组:当数据是规则矩形(如像素矩阵、Excel表格),追求访问速度。
  • 用交错数组:当行长度差异大(如日志数据、不规则网格),或需要动态调整行结构。

示例场景

  • 二维数组:存储100×100的灰度图像像素。
  • 交错数组:存储不同用户的订单记录(每个用户订单数不同)。
相关推荐
悟乙己37 分钟前
AFAC2026 赛题四金融长文本 Agent竞赛学习笔记:关联技术(二)
笔记·学习·金融
yi0111 小时前
LeetCode 424. 替换后的最长重复字符|不定长滑动窗口:如何判断窗口是否合法?
笔记·python·算法·leetcode·双指针·滑动窗口
Behavior1 小时前
Unity 7.0 Alpha 拆解:编辑器干掉 Mono 换 CoreCLR
c#·unity3d·游戏开发
杨逢昌工厂6S管理1 小时前
116——杨逢昌:归位三定闭环法的旺季轻量化执行方案与工具清单
经验分享·笔记·职场和发展·学习方法
想喝奶茶啾啾1 小时前
AMBA CHI架构以及规范中使用的术语 翻译笔记(1)
笔记·arm·chi
淡海水2 小时前
02-06-原理篇-增量式GC与并发GC
算法·unity·c#·并发·gc·增量
Vertira2 小时前
C# 函数封装成 DLL,
开发语言·c#
yi0113 小时前
LeetCode 3. 无重复字符的最长子串|不定长滑动窗口:什么时候更新最大值?
笔记·python·算法·leetcode·双指针·滑动窗口
Water_based3 小时前
水性滚涂漆应用于滚喷机小五金件喷涂工艺详解
经验分享·笔记·产品经理
水饺编程4 小时前
第1章,[Win32 章节]:在 VS2019 里面安装 MSDN
c语言·c++·windows·visual studio