指针和多维数组

@[TOC]指针和多维数组

了解多维数组之前我们要做什么?

指针和多维数组有什么关系?为什么要了解它们的关系?处理多维数组的函数要用到指针,所以在使
用这种函数之前,先要更深入地学习指针。至于第1个问题,我们通过几个示例来回答。为简化讨论,我
们使用较小的数组。假设有下面的声明:
int zippo[4][2]; /内含int数组的数组/
然后数组名zippo是该数组首元素的地址。在本例中,zippo 的首元素是一一个内含两个int值的数
组,所以zippo是这个内含两个int值的数组的地址。下面,我们从指针的属性进一步分析。

因为zippo 是数组首元素的地址,所以zippo的值和&zippo[0]的值相同。而zippo[0]本身
是一个内含两个整数的数组,所以zippo[0]的值和它首元素(-一个整数)的地址(即&zippo[0] [0]
的值)相同。简而言之,zippo[0]是一个占用一个int大小对象的地址,而zippo是一个占用
两个int大小对象的地址。由于这个整数和内含两个整数的数组都开始于同一个地址,所以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],即一个int类型的值。简而言之,zippo是地址的地址,必须解引用
两次才能获得原始值。地址的地址或指针的指针是就是双重间接(double indirection) 的例子。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值