黑马程序员技术交流社区

标题: 行指针列指针问题 [打印本页]

作者: 勇猛的小黑    时间: 2015-11-10 17:29
标题: 行指针列指针问题
int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
       
        二维数组在内存中是按行存储的。如下图所示,  ‘
        二维数组可以看做是一个特殊的一维数组,例如数组a就可以看做是一个有三个元素a[0],a[1],a[2]的数组(所以a+1指向第二行a[1]行(a+1代表指向第二行的指针
                                                                                                                                                                                                                                                        *(a+1)才代表第二行的首地址))
                                行指针代表的是指向这一行的首地址的指针
                                列指针就是这一列的首地址 eg:a[0]又是一个数组包含四个元素a[0][0],a[0][1],a[0][2],a[0][3]
                                                                                        a[0]代表第一列的首地址,即a[0][0]的地址。
                                                                                        a[0]+1 代表第二列,即a[0][1]所在列 2,6,10那一列
                                注意:行指针是指向这一行首地址的指针,而列指针就是这一列的首地址
                                        *行指针 == 这一行的首地址                  *列指针  == 这一列的第一个元素的值。
                                        **行指针 == 这一行的第一个元素的值
                a[0]   1 2  3  4
                a[1]   5 6  7  8
                a[2]   9 10 11 12
        a代表指向第0行的首地址的指针                即*a代表 1的首地址。
        a+1代表指向第1行的首地址 的指针   即 *(a+1)代表5的首地址       
        a+2代表第二行的首地址。  即  *(a+2)9的首地址
       
        a[0]代表第0列的首地址    即1
        a[0]+1 代表第1列的首地址 即2
        a[0]+2 代表第2列的首地址 即3
        a[0]+3 代表第3列的首地址 即4






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2