指针与二维数组

通过前面的学习,已知:

int arr[3]={1,3,5};
arr[0] 可以用 *(arr+0) 表示
arr[1] 可以用 *(arr+1) 表示
arr[2] 可以用 *(arr+2) 表示

现有二维数组如下:

int arr[3][4]=
{
    {1,2,3,4},
    {5,6,7,8},
    {9,10,11,12}
};

则:

arr[0] ~~~  *(arr+0)
arr[1] ~~~  *(arr+1)
arr[2] ~~~  *(arr+2)

此处arr[0]*(arr+0)是二维数组arr的第一个元素的值,该值是内层数组{1,2,3,4}的起始地址.

arr[0]赋值给 temp数组

int temp0[4] = arr[0];
int temp1[4] = arr[1];
int temp2[4] = arr[2];

获取最终的值:

arr[0][0] ~~~~ 将arr[0]换为上边的temp0数组

arr[0][0] ~~~~  temp0[0] ~~~~ *(temp+0)  ~~~~ *(*(arr+0)+0)
arr[0][1] ~~~~  temp0[1] ~~~~ *(temp+1)  ~~~~ *(*(arr+0)+1)
arr[0][2] ~~~~  temp0[2] ~~~~ *(temp+2)  ~~~~ *(*(arr+0)+2)
arr[0][3] ~~~~  temp0[3] ~~~~ *(temp+3)  ~~~~ *(*(arr+0)+3)

arr[1][0] ~~~~ 将arr[1]换为上边的temp1数组

arr[1][0] ~~~~  temp0[0] ~~~~ *(tmep+0)  ~~~~ *(*(arr+1)+0)
arr[1][1] ~~~~  temp0[1] ~~~~ *(temp+1)  ~~~~ *(*(arr+1)+1)
arr[1][2] ~~~~  temp0[2] ~~~~ *(temp+2)  ~~~~ *(*(arr+1)+2)
arr[1][3] ~~~~  temp0[3] ~~~~ *(temp+3)  ~~~~ *(*(arr+1)+3)

arr[2][0] ~~~~ 将arr[2]换为上边的temp2数组

arr[2][0] ~~~~  temp0[0] ~~~~ *(tmep+0)  ~~~~ *(*(arr+2)+0)
arr[2][1] ~~~~  temp0[1] ~~~~ *(temp+1)  ~~~~ *(*(arr+2)+1)
arr[2][2] ~~~~  temp0[2] ~~~~ *(temp+2)  ~~~~ *(*(arr+2)+2)
arr[2][3] ~~~~  temp0[3] ~~~~ *(temp+3)  ~~~~ *(*(arr+2)+3)