二维数组名在sizeof中的使用

前提:当数组名在 sizeof 中单独存放时,数组名表示整个数组, 当数组名单独与&结合时也表示为整个数组除此自外的数组名都是首元素地址

看几个经典的例子(然后其他的各位可以当练习进行):

看第一个printf 处 sizeof(a); 此处a单独放入sizeof中,表示整个a数组,因此大小为48

看第三个printf处sizeof(a[0]); 此处将 a[0]单独放入sizeof中,表示的是整个a[0]这一列的数组,因此大小为4*4 = 16

看第四个printf处sizeof(a[0]+1); 此处a[0]并没有单独存放sizeof,也没有单独与&相连,因此表示a[0]这一列的元素的首地址 (即 a[0][0]的地址) 因此a[0]+1为 a[0][1]的地址,又由于是地址,因此大小为4/8

看第六个printf处sizeof(a+1); 此处的a并没有单独放入sizeof,也没有单独与&相连,因此表示a这个数组的首元素(a的第一行的地址即第一列a[0]的地址) 因此a+1为第二列的地址,即a[1]的地址(相当于&a[1]),又由于是地址,因此大小为4/8

看第七个printf处的sizeof(*(a+1) )  由上一条可知,a+1此处是第二行的地址,因此解引用,后为整个数组a的第二行,因此是16个字节

看第八个printf处的sizeof(&a[0]+1)  此处的a[0]与&结合,因此此处a[0]表示的为整个a的第一行,所以&a[0]为取出a第一行的地址,因此&a[0]+1表示为数组a的整个第二行的地址(相当于&a[1])

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值