C++深入学习笔记(5)——多维数组

严格来说,C++语言中没有多维数组,多维数组其实是数组的数组。

1.多维数组的初始化

正如我们所说的,多维数组其实是数组的数组,那么就可以理解成,一个元素数量为m的数组,它的元素为元素数量为n的数组。那么可以显式地初始化它。

        

int array[3][4] = {
                    {1, 2, 3, 4},
                    {5, 6, 7, 8},
                    {9, 10, 11, 12}
                  };

这个数组的定义和下面数组的定义是等价的。

int array[3][4] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};

由此我们可以看出来,如果我们没有用大括号来划分的话,那么编译器按照每四个为一组数组的方式进行初始化。

int array1[3][4] = {{1}, {2}, {3}};
// 这个数组的意思是第一个元素(也就是第一个数组)的第一个元素为1, 其余被默认初始化为0,第二个
// 元素和第三个元素同理。

int array2[3][4] = {1, 2, 3, 4};
// 这个又是什么意思呢?该数组的第一个元素(也就是第一个数组)被初始化为{1, 2, 3, 4},其余
// 的被初始化为0

2.多维数组的引用。

直接上代码吧。

int &rarray = array;        // 引用array数组
int (&rarray)[4] = array[1];        // rarray引用的是array中的第二个元素(即第二个数组)

3.使用范围for语句处理多维数组

int a = 0;
for(auto &row : array)        // 外层数组
{
    for(auto &cow : row)        // 内层数组
        cow = a++;
}

先循环第一个数组得到作为其元素的每一个数组,再对每一个作为外层数组元素的数组遍历,访问每一个元素。总之,还是那句话:多维数组是数组的数组。二维是数组的数组,三维是数组的数组的数组......

4.指针和多维数组

有时候我们希望指向外层数组中的内层数组,那么这该怎么操作呢?

其实和引用的方法差不多。

int array[3][4];        // 默认初始化为0
int (*parray)[4];        // 指向含有四个整数的数组
parray = &array[2]        // 指向array的尾元素

注意:*parray 和[4]必须用括号隔开,int *parray[4]表示的是含有四个指向整数的指针的数组

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值