黑马程序员技术交流社区

标题: 指针快虐死我了。 [打印本页]

作者: runsunlife    时间: 2015-8-18 14:22
标题: 指针快虐死我了。
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]
作者: 15095185209    时间: 2015-8-18 14:34
加油啊!兄弟,还没看到指针呢!过来顶你啊!
作者: runsunlife    时间: 2015-8-18 15:30
谢谢哈。加油
作者: flywithde    时间: 2015-8-18 15:39
首先a[1][0]是一个数组元素的值,而不是地址,&a[1][0]才是地址,(a+1)是二维数组中第二个数组的首地址,即(a+1)存放的是一个地址,*(a+1)即取出(a+1)中存放的地址,而*(a+1)又是存放的一个一维数组的地址故*(a+1)  == &a[1][0]
作者: runsunlife    时间: 2015-8-18 16:42
flywithde 发表于 2015-8-18 15:39
首先a[1][0]是一个数组元素的值,而不是地址,&a[1][0]才是地址,(a+1)是二维数组中第二个数组的首地址, ...

{:3_47:}好像有点看明白了
作者: 庞佳星    时间: 2015-8-18 19:56
这个地方好好做做笔记,现在看完oc的内容了,我有得回去看看这块!!!!以后复习的时候也能用到。




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