(一)用指针操作二维数组:
(1)二维数组中蕴含的地址关系
定义一个整型二维数组a[3][4] = {
{11,21,31,41},{22,32,42,52},{33,43,53,63}};
对于存储地址、数组元素有如下等价关系:
(a为数组名(首地址)、i为行循环控制变量、j为列循环控制变量)
存储地址的表示方式:&a[i][j] <---> a[i]+j <---> *(a+i)+j
数组元素的表示方式:a[i][j] <---> *(a[i]+j) <---> *(*(a+i)+j) <---> (*(a+i))+[j]
2)用指针引用二维数组的方式一:"指针数组"。
指针数组:由指向同一数据类型的指针构成的数组,数组中每一个元素都是指针变量。
建立"指针数组"与"二维数组元素"的关系:
int *p[3],i = 0; //包含3个指针变量p[0]、p[1]、p[2]
int a[3][4] = {
{11,21,31,41},{22,32,42,52},{33,43,53,63}};
for (i = 0; i < 3; i++)
{
p[i] = a[i]; //建立指针变量与二维数组每行首地址的关系
}
建立关系后,通过指针p引用二维数组的元素a[i][j]的等价表示方式有: