黑马程序员技术交流社区

标题: 二维数组与指针的关系 [打印本页]

作者: 小月格子猫    时间: 2014-8-17 23:42
标题: 二维数组与指针的关系
1  如  int array1[2][3]=
{     {1,2,3},

          {2,3,4}

};
       int  (*a) [3]  = array;
   然后  关于指针的地址的访问 大家要注意      
       比如 我们 要访问  array[1][2];如果用指针的写法为  a[1][2];
                                                                                                       *(*(a+1)+2);
                                                                                                            *(a[1]+2)
     1  在这里a表示数组的地址,*a,表示访问a的地址,也就进入了a[0]的地址,在*一下,就是**a,表
         示访问a[0][0]的数值,说到这里,也就表面了如果要访问二维数组的值,是必须加入两个**,才          能访问
    2   然后 我们在看,前面我定义*a的时候,为什么要在它后面加了[3]是什么意思呢?
         这是要表明,当我 a+1,的时候,他是直接跳3个元素的地址的,其中int 为4个字节,也就是一下子
         跳12个字节,如果我定义(*a)[5]等于一下跳五个,也就是20个字节
   3  然后我们 *(a+1),表示直接进入到了array[1]的地址,然后在*一下就表示直接访问a[1][0]了
         如果我们在这个时候*(a+1))+1,就不再表示跳12字节了,而是在array[1]的基础上加四个字       节,进入第二个元素,而不是跳到二维的第二组,也就是array[1][1],在*一下*(*(a+1)+1)
      也就是表示进入访问array[1][1],记住这个时候,括号一定不要漏掉,漏掉一个括号,可能
     访问的地址就不对了,快捷方便的话,就直接 a[X][X],可以把*号省掉,直接访问了array[x] [x]的数据




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