C++数组介绍(二维数组)

一、二维数组的定义

在 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。

 

完整示范样例已给出,请参照开头所附源码理解具体细节逻辑流程。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值