多维数组与指针

C语言中有个数组,一维数组还好不会有什么问题,二维就有很大问题了,其中,多级指针与“多维”数组更是让很多人云里雾里 。写下此篇,一步一步剖析多维数组。
首先,一维数组都知道:
char a[3];
这里写图片描述
a:是数组名,会转化为数组的起始地址;
a + n: 表示数组的起始地址偏移 对象的n个长度;
*(a + n): 获取数组的第n个对象的内容;
a[n]: 等价于*(a+n);
&a:获取数组指针的地址,此处为char[3]的指针类型;
&a[0]:获取数组第一个对象的地址,此处为char* 类型;
&a + 1: 偏移一个char[3]的长度的指针;
&a[0] + 1: 偏移一个char*的长度;
那么理解a+1,&a+1,&a[0]+1,sizeof(a),sizeof(&a)应该就不难了吧。
如果理解了上面,尤其是理解数组的成员对象这个概念那么就不难理解多维数组了。
下面来看二维数组:
char a[3][2];
这里写图片描述
看图片应该理解了吧,这里的对象不再是一个char, 而是一个char [2]的数组
那么如何进入对象里面呢,答案是*;
*(a+n):获取第n个对象, 此时*(a+n)表示第n个对象的首地址,可以把它看成是一个数组名;
*(a + n) + m: 表示数组第n个对象中的第m个对象;
*(*(a + n) + m): 获取数组的第n个对象第m个对象的内容;
&(*(a+n

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值