一个小蚂蚁 发表于 2019-4-21 14:26:43

请大佬看一下,指点迷津。谢谢


【求助帖】请及时确认最佳答案,下次提问时可以得到更多关注,问题可以更快解决





#include <stdio.h>

int main()
{
      int array = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
      int (*p) = &array;

      printf("%d\n", *(*(p+1)-6));

      return 0;
}

我的理解:
前提是把这个array看成一个二维数组:
指针p指向整个数组,可以把array看做是一个二维数组,只不过这个二维数组的列为0,写成 int array,所以p==&array,所以p+1==&arrary,而array可以看做是第二列的首个元素的地址,
所以*(p+1)== *(&array) == arrary 能不能这么理解,但是这么理解又得不出答案。

而且array是一个地址,*(p+1)不应该是一个确定的值而不是地址嘛??
我很困惑,希望大佬能够救济一下我,我这个问题困扰我很久了。

而且小甲鱼的说法 怎么理解,答案4又是怎么来的???

jackz007 发表于 2019-4-21 15:00:55

int (* p) = & array       ;

* p = & array            ;
* (p + 1) = & array   ;
* (p + 1) - 6 = & array    ;
* (*(p + 1) - 6) = array   ;

一个小蚂蚁 发表于 2019-4-21 15:38:18

jackz007 发表于 2019-4-21 15:00


知道了,大佬,谢谢
页: [1]
查看完整版本: 请大佬看一下,指点迷津。谢谢