另类理解多维数组和数组指针

先定义一个多维数组:

char arr[4][3][2]=           //定义了一个三维数组

{                                    //0        //1        //2            //竖为行,横为列 

                                      //0 //1 //0 //1 //0//1                   

                           //0     {{'a','b'},{'c','d'},{'e','f'}},

                           //1     {{'g','h'},{'i','j'},{'k','l'}},

                           //2     {{'m','n'},{'o','p'},{'q','r'}},                //‘r’=arr【2】【2】【1】

                           //3   {{'s','t'},{'u','v'},{'w','x'}}

}

char (*pa)[2]=&arr[1][0];                //二级指针

char (*ppa)[3][2]=&arr[1];                //三级指针

分别通过两个指针访问数组中‘r’元素

此函数为arr【4】【3】【2】,那么可以把每一维看作其中数的进制,比如在一维中为二进制,逢2进1,二维中逢3进1,三维中逢4进1;理解后,我们定义一个数组为brr【i】【j】【k】,那么在这个数组中一维就是逢k进1,二维就是逢j进1,三维就是逢i进1;现在我们来看指针如何访问元素,元素r在数组中为arr【2】【2】【1】,先看指针pa,pa中保存arr【1】【0】的地址,若不够三维则补【0】,如pa补齐为arr【1】【0】【0】,此时pa地址小于r,则用arr【2】【2】【1】减arr【1】【0】【0】,为arr【1】【2】【1】,那么用指针推元素为arr【1】【0】【0】加arr【1】【2】【1】,因为pa本是二维指针,只是我们在运算的时候需要补齐,所以应该第三维化到第二维来,还记得我们二维是逢3进1吧,那么退回来则为arr【0】【5】【1】,用指针访问元素为*(*(pa+5)+1),//*在这里为解地址,pa为二级指针,解一次到一维,解两次得到值;再看,三维arr【1】【2】【1】退到二维为arr【0】【5】【1】,我们是否能退到一维,当然能,还记得一维是逢2进一吧,那么一维为arr【0】【0】【11】,此时用pa来访问值为*(*(pa)+11)。

下课!

别急,还有课后作业思考一用指针ppa来访问元素r。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值