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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© runsunlife 中级黑马   /  2015-8-18 14:22  /  613 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
     // a+1 第二行第一个元素的地址
     //*(a+1)  == &a[1][0]
   
    printf("*(a+1) = %p\n",*(a+1));
    printf("&a[1][0] = %p\n",&a[1][0]);

     // a+1 第二行第一个元素的地址
     //*(a+1)  == &a[1][0]
   
    printf("*(a+1) = %p\n",*(a+1));
    printf("&a[1][0] = %p\n",&a[1][0]);

不知哪位大神指针学得好。为何    /*(a+1)  == &a[1][0]而不是等于*(a+1)  == a[1][0]

5 个回复

倒序浏览
加油啊!兄弟,还没看到指针呢!过来顶你啊!
回复 使用道具 举报
谢谢哈。加油
回复 使用道具 举报
首先a[1][0]是一个数组元素的值,而不是地址,&a[1][0]才是地址,(a+1)是二维数组中第二个数组的首地址,即(a+1)存放的是一个地址,*(a+1)即取出(a+1)中存放的地址,而*(a+1)又是存放的一个一维数组的地址故*(a+1)  == &a[1][0]
回复 使用道具 举报
flywithde 发表于 2015-8-18 15:39
首先a[1][0]是一个数组元素的值,而不是地址,&a[1][0]才是地址,(a+1)是二维数组中第二个数组的首地址, ...

{:3_47:}好像有点看明白了
回复 使用道具 举报
这个地方好好做做笔记,现在看完oc的内容了,我有得回去看看这块!!!!以后复习的时候也能用到。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马