二维数组
要深刻理解二维数组,需要了解二维数组的三点特性:
- 1、二维数组本质上是一位数组,他的每个元素都是一维数组;
- 2、当数组名单独出现时,一般指首元素的地址;
- 3、在C语言中,数组与指针有着密不可分的关系:对于二维数组,他的数组名单独出现指一个二级指针的值
具体例子
设一个二维数组 int a[4][5],一个4行5列的数组,即四个一维数组的组合,每个一维数组有5个元素。
a
当数组名单独出现时,指的是第一个数组元素的地址,在二维数组中,元素是一维数组,那么一维数组的地址就是一个二级指针。
故:a 指 &a[0],以a[0][0]为首的二维数组,类型是二级指针
a[0]
当二维数组只出现行下标时,指代的就是这一行的一维数组,
故:a[0] 指 二维数组的第一行元素,以a[0][0]为首的一维数组,类型是一级指针
*a
对a进行解引用,那么有 (*a)[i] 即a[0][i],
故:*a 同 a[0]
a[0][0]
指二维数组的第一个元素。
a[1]
指二维数组的第二行元素,
故:a[1] 以a[1][0]为首的一维数组,类型是一级指针
&a[1]
指二维数组第二行元素的地址,类型是二级指针。