C语言 二维数组的指针
二维数组可以看作特殊的一维数组,即,可以理解成数组的数组。例如有如下数组定义语句:
int a[3][4]={{1,3,5,7},{9,11,13,15}, {17,19,21,23}};
可以把二维数组看成一个特殊的一维数组,数组名a代表数组的起始地址,而其第一个元素a[0]也是一个数组---包含4个int数据的一维数组,所以该二维数组a是由三个“特殊的”元素组成的一个“特殊的”一维数组。a[0]、a[1]、a[2]分别代表该数组中的三个元素(三行)。
数组名a是这个“特殊的” 一维数组的数组名,也是该数组的首地址,同样也代表该数组的第一个元素的地址,即第一行的首地址。对于第一行的首地址来说,它代表着首行一整行(其中包含4个元素),而不是指某个具体元素。所以,可以将第一行的首地址(a)称为“行指针”。同理,a+0, a+1, a+2都是行指针。如图所示。
2000 | |
40] | |
► | |
2008 | a[1] |
a+2 ► 2016 | o[2] |
1 | 3 | 5 | 7 |
9 | 11 | 13 | 15 |
17 | 19 | 21 | 23 |
接下来,接着看二维数组中每一行的构成,以首行为例,首行的元素分别是a[0][0], a[0][1], a[0][2], a[0][3]。因为前面已经说过,将第一行看成一个整体,a[0]就是这个数组的名称,也是这个数组的首地址,也就是第一个元素a[0][0]的地址,所以可以写成a[0]+0,它指向该行的第0列元素。这个指针每移动一次,从第0列移动到第1列。所以它是一个以数组元素为单位进行控制的列指针。即a[0] 和a[0]+0都是指具体的元素,所以可将其称之为“列指针”。
这里就提出了在二维数组中的两个重要概念:行指针和列指针。
点击加载更多评论>>