A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小月格子猫 中级黑马   /  2014-8-17 23:42  /  1204 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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]的数据

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马