涛哥大讲堂 之 二维数组与二级指针之间的转变

本文通过分析涛哥给出的题目,解释了如何将二维数组a赋值给二级指针p,使得a[x][y]等于p[x][y]。关键在于理解二维数组的本质是数组的数组,a[i]实际上是int*类型的指针。因此,通过构造一个指针数组p并将其元素分别赋值为a[0]到a[4],可以实现转换。
摘要由CSDN通过智能技术生成

【题目】

上周五, 涛哥给我出了一道题:

int a[5][10];

int **p;

如何将a赋值给p(a与p之间如何转换), 使a[x][y] == p[x][y]

-------------------------------------------------------------------------------------

【分析】

二维数组看法:两个一维数组

第一个一维数组:a[5]:a[0] a[1] a[2] a[3] a[4]

第二个一维数组:a[0][10]:a[0][0], a[0][1], a[0][2], a[0][3], a[0][4], a[0][5], a[0][6], a[0][7], a[0][8], a[0][9]

                             a[1][10]:a[1][0], ......

                             a[2][10]:a[2][0], ......

                             a[3][10]:a[3][0], ......

                             a[4][10]:a[4][0], ......

又因为a[0] == &a[0][0], a[1] == &a[1][0], a[2] == &a[2][0], a[3] == &a[3][0], a[4] == &a[4][0]

所以我们可以看出a[5]这个数组实际上就是个指针数组, 有五个元素, 每个元素都是int* 类型的指针变量

所以我们只要构造一个指针数组p, 对应赋值为a[0]~a[4], 则p[0]~p[4]指向二维数组对应位置, 则p[x][y] == a[x][y]

【注】构造指针数组在代码里写了两种方法, 见不同的条件编译, 运行结果与代码如下:

root@ubuntu:/lianxi/lianxi_c++/chapter1# gcc tao_pro.c -o pro.out
root@ubuntu:/lianxi/lianxi_c++/chapter1# ./pro.out
liao1
---------a[5][10]---------
a[0][0] =    1a[0][1] =    2a[0][2] =    3a[0][3] =    4a[0][4] =    5a[0][5] =    6a[0][6] =    7a[0][7] =    8a[0][8] =    9a[0][9] =   10
a[1][0] =   11a[1][1] =   12a[1][2] =   13a[1][3] =   14a[1][4] =   15a[1][5] =   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值