一、二维数组的定义
在 C++ 中,二维数组可以看作是一个表格形式的数据结构,由行和列组成。其基本语法如下:
type arrayName[rowSize][columnSize];
其中 type 是数据类型,arrayName 是数组名称,rowSize 和 columnSize 分别代表行数和列数。
例如,创建一个大小为 3×4 的整型二维数组:
int myArray[3][4];
这会分配一块连续内存空间给这个二维数组,总共存储 (3 \times 4 = 12) 个整数值1。
二、初始化二维数组
可以通过大括号 {} 对二维数组进行初始化。如果省略部分值,则这些位置会被默认赋值为零。
示例代码:
int a[3][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
上述代码中,a 被初始化为一个 3 行 4 列的矩阵。如果没有完全指定初始值,未填充的部分将自动设为零2。
三、访问二维数组中的元素
通过索引来访问二维数组中的某个特定元素。假设有一个二维数组 arr[m][n],那么它的任意元素可以用以下方式获取:
arr[i][j]
这里 i 表示第几行(从 0 开始),j 表示第几列(同样从 0 开始)。注意越界访问会导致未定义行为。
举例说明如何打印整个二维数组的内容:
for(int i = 0; i < m; ++i){
for(int j = 0; j < n; ++j){
cout << arr[i][j] << ' ';
}
cout << endl;
}
此循环遍历并输出每行列出的所有项1。
四、指针与二维数组的关系
由于数组名本质上就是指向第一个元素的指针,因此也可以利用指针操作来处理二维数组。比如下面的例子展示了怎样借助指针完成某些复杂运算或者间接寻址。
考虑一段程序片段:
#include <iostream>
using namespace std;
int main(){
int a[3][4]={
{1,2,3,4},{5,6,7,8},{9,10,11,12}
};
// 访问第二行第三列的元素
cout<<*( *(a+1)+2 )<<endl;
return 0;
}
在这里 (a+1) 实际上指的是原数组偏移了一行后的起始地址;再加 [2] 就定位到了目标单元格的位置2。
另外值得注意的一点是关于多维数组指针类型的声明方法——需要额外小心圆括号放置顺序以免误解成其他语义上的对象集合。
五、排序二维数组
当涉及到对二维数组整体按某种规则重新排列时,通常需要用到自定义比较函数配合标准库 <algorithm> 提供的功能实现灵活控制过程。像之前提到过的例子那样编写合适的 comparator 可以满足不同场景下的需求1。
完整示范样例已给出,请参照开头所附源码理解具体细节逻辑流程。
5178

被折叠的 条评论
为什么被折叠?



