二维数组与指针

二维数组元素值的表示方法(m x n 数组 a 的第 i 行 j 列元素)

1.数组下标表示:

        a[i][j];

2.指针表示:

        *(*(a + i) + j);   二级指针

                对于一维数组b[m], b + i 表示第 i 个元素的地址,那么我们把多维数组也当成一维数组

                a + i 表示第 i 个元素的地址,这里的第 i 个元素又是一个一维数组,所以 a + i 表示第 i 个一维数组的地址,这里的 a + i 是一个指向一个一维数组的指针,所以 a + i 是一个二级指针

                *(a + i)表示第 i 个一维数组

                *(a + i) + j 表示第 i 个一维数组的第 j 个元素的地址

                *(*(a + i) + j) 表示第 i 个一维数组的第 j 个元素, 即 a[i][j]

        *(&a[0][0] + n * i + j);  一级指针

               &a[0][0] 表示二维数组首元素的地址,&a[0][0] + n * i + j 表示 第 i 行,第 j 列数组元素的地址

                *(&a[0][0] + n * i + j)表示第 i 行 ,第 j 列的元素,即 a[i][j]

3.行用下标表示:

        *(a[i] + j);

                a[i] 表示 二维数组 a 的第 i 个元素,由于这个元素又是一个一维数组,所以 a[i] 可以看成第 i 行的一维数组,我们知道,数组名 + j 表示这个数组第 j 个元素的地址,所以a[i] + j 表示第 i 行,第 j 个元素的地址

                *(a[i] + j) 表示二维数组第 i 行,第 j 列的元素,即 a[i][j]

4.列用下标表示

        (*(a + i))[j]

                  a + i, 表示二维数组第 i 个元素的地址,这里的元素又是一个一维数组,所以就是第 i 个一维数组的地址

                 *(a + i) 表示第 i 行的一维数组,可以把它看成一个数组名,通过下标访问元素,所以 (*(a + i))[j] 表示访问二维数组的第 i 行的第 j 个元素,即 a[i][j]

猜你喜欢

转载自blog.csdn.net/chenxin6991/article/details/79972607