二维数组怎样存储

大家对二维数组的存储方式有许许多多奇怪的错误看法,这里来梳理一下

其实呢,二维数组的说法是不准确的,因为C/C++都不存在二维数组的数据结构,只不过一些入门教程为了让初学者快速理解产生的名词,所以在C/C++仅存在数组的数组的说法。所以说二维数组不过是方遍我们去理解的。

举个例子吧:

int nums[2][2] = {
{1, 2},
{2, 3}
};

这是一个很普通的二维数组,从某个维度上来理解(一切为了李姐)int x[2]与int nums[2][2等价,这里的x我们视为一种自定义数据类型 x 等于int a[2],好嘛,我们就可以认出所谓二维数组就是,一维数组类型的一维数组,二维数组也看可以看成一维数组,第一行数据为这个二维数组的首元素(二维数组的元素类型就是一维数组),行优先策略。

从上述论证中可以得出,二维数组是属于一维数组的(嗯,不好解释,自行理解),所以二维数组是满足一维数组中的属性的,例如:数组名代表数组的首地址,也可以代表数组的首元素地址。这样讲不直观,给大家演示一下吧。

在这里插入图片描述
可见nums与&nums[0]一致。
&num[1]与&nums[0]差值为8,可推出一行,一行进行存储的(如下图)

一维数组的数组名是一级指针,可推出二维数组的数组名也是一级指针。
在这里插入图片描述
推理方面有很多问题,论证有很多问题,大家看一下,有什么问题,可以评论,我会回答的。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值