以 int Zippo [4][2];为例
基知:
- 处理多维数组的函数要用到指针
- 二维数组的元素(或地址)是依次紧挨着排列
- 二维数组的首元素与一维数组的首元素不同
- 数组名是数组首元素的地址
- 数组的地址即数组首元素的地址,即一般说什么什么的地址均指首元素的地址,因为它们在系统内部是依次紧挨着存储,知道了第一个元素的地址,便可依次找到剩余其它元素的地址
- Zippo[0]它本身既是一个内含俩个整数的数组,也是它这个内含数组的首元素地址
- 数组名Zippo是一个内含2个int类型值的数组的地址,同时它也是一个指向一个8字节的指针
内容
8. 在上面的二维数组中,因为数组名等于数组首元素的地址,而又由二维数组的定义,zippo的首元素是一个内含俩个int值的数组,即从二维视图来说是第一行的俩个元素,所以Zippo的值和&Zippo[0]的值相同,即二维数组的地址与Zippo[0]这个数组的地址相同,Zippo[0]的值和它首元素即&Zippo[0][0]的值相同
-
给二维数组的指针加1,其值会增加对应类型大小的数值,所以在这方面,Zippo和Zippo[0]不同,因为Zippo指向的对象占用了俩个int大小,而Zippo[0]指向的对象只占用了一个int大小,所以Zippo+1表示增加了8个字节,而Zippo[0]+1表示增加了4个字节
-
要把Zippo[0]也要看成一个数组(所以由数组名等于首元素的地址,故Zippo[0]&zippo[0][0]),所以&Zippo[0]就是取数组Zippo[0]的地址
而对于Zippo[0]的地址,其为&Zippo[0][0],所以ZippoZippo[0]==&Zippo[0][0] -
解引用时,Zippo代表该数组首元素(Zippo[0])的值(地址),但是Zippo[0]**本身是一个int类型的值的地址,所以Zippo就是&Zippo[0][0],简而言之,Zippo是地址的地址,必须解引用俩次才能获得原始的值**