对二维数组行指针和列指针理解

二维数组的行指针和列指针是任何c 语言初学者头疼的事情,为了方便理解,特总结出四点规律:

1、 对于任意二维数组int a[ROW][COLUMN]来说,a+i 表示行指针,而a[i]标识列指针(其

中i 表示某个整形值),行指针转化为列指针是通过在行指针前面加“*”运算符做到,而列指针转化为行指针是通过“&”来做到。如Fig.1所示:

Fig.1 行指针和列指针转化图

2、 在二维数组int a[ROW][COLUMN]中,可以认为划分为三层,最高层为行指针,中间层

为列指针,而最底层为元素。由高层到底层可以通过”*”运算符来做到,而由底层到高层可以通过”&”运算符来做到。如Fig.2所示:

Fig.2 二维数组中层次图示

3、 对于二维数组int a[ROW][COLUMN]来说,行指针的本质就是一个指向包含COLUMN

个元素一维数组的指针 也就是 int (*p)[COLUMN],而列指针的本质就是一个指向元素的指针,也就是 int *p;

4、 对于一维数组来说,总结出的一个通用公式是 a[x]=*(a+x)=*(x+a)=x[a],这也就是我们

既可以用a[3]也可以用3[a]的原因;而对于二维数组来说,总结出的通用公式是 a[i][j]=*(*(a+i)+j)

a[i] *(a+i) 行指针(a+i )

* &

相关文档
最新文档