二维数组的原理与指针运算的原理

本文深入探讨二维数组的本质,指出二维数组在内存中是连续线性空间的体现,由外层和内层一维数组组成。通过指针运算,详细阐述了如何通过外层和内层指针来访问数组元素,特别是如何通过二级指针实现对二维数组的操控。文中解释了指针加减运算在二维数组中的实际含义,以及解引用在控制指针间转换中的关键作用。
摘要由CSDN通过智能技术生成

上次梳理了一维数组的与指针的原理以及它们的关系,我们再来看看二维数组。

当我们定义一个二维数组时,实际上占用的是内存中连续的线性空间。

倘若我们定义整形的二维数组:int b[2][3],实际上它在内存中占用连续6个整形元素的空间。而且是3个元素一组,形成2组一维数组。

这句话的意思是,二维数组b[2][3]可以看作包含两个元素的一维数组,而每个元素又恰好包含3个整形的元素,恰好也是一维数组。

根据这个原理,我们可以 将二维数组看作是嵌套的一维数组,即分作外层一维数组与内层一维数组。

同理,既然是一维数组,就有内嵌的特殊指针。

外层的一维数组我们可以看作是b[2],它具有特殊的指针b,指针地址是一维数组b首个元素b[0]的地址,即&b[0],指针b存取着数组首个元素b[0]的地址,所以b == &b[0];

既然存在指针,当然可以进行指针运算,同一维数组,我们对指针b进行指针运算也是对指针b存取的地址进行更改,只是…指针b每+1,地址加多少位呢?我们定义的数组数据类型为整形,可我们这个“特殊”的外层一维数组每一元素占用地址不是一整形地址,而是3整形地址。即3*4 = 12 字节。

所以,当我们对b进行指针运算时,得出的地址是下一个包含3个整形元素的元素的地址,即外层一维数组下一个元素的地址。

说完了外层的一维数组,我们再来看内层的一维数组。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值