C 指针和多维数组

int zippo[4][2]; /* 整数数组的数组*/

数组名zippo同时也是数组首元素的地址(本例中,zippo的首元素本身又是包含两个int的数组,因此zippo也是包含两个int的数组的地址。)


  • 因为zippo是数组首元素的地址,所以zippo的值和&zippo[0]相同。另一方面,zippo[0]本身是包含两个整数的数组,因此zippo[0]的值同其首元素(一个整数)的地址&zippo[0][0]相同。
    ( x = zippo[0];
    x[0] = zippo[0][0];
    x[1] = zippo[0][1];)
    简单的说,zippo[0]是一个整数大小对象的地址,而zippo是两个整数大小对象的地址。因为整数和两个整数组成的数组开始于同一个地址,因此zippo和zippo[0] 具有相同的数值。

  • 对一个指针(也即一个地址)加1,会对原来的数值加上一个对应类型大小的数值。在这方面,zippo和zippo[0]是不一样的,zippo所指对象的大小是两个int, 而zippo[0]所指对象大小是一个int.因此zippo+1和zippo[0] + 1 的结果不同。

  • zippo[0]是其首元素zippo[0][0]的地址,所以*(zippo[0]) 代表存储在zippo[0][0]中的数值,即一个int 数值。同样,*zippo代表其首元素zippo[0]的值,但是zippo[0]本身就是一个int数的地址,即&zippo[0][0],因此*zippo是&zippo[0][0].对这两个数同时取值:

*zippo == &zippo[0][0] == zippo[0][0].

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值