请大佬看一下,指点迷津。谢谢
【求助帖】请及时确认最佳答案,下次提问时可以得到更多关注,问题可以更快解决
#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又是怎么来的??? int (* p) = & array ;
* p = & array ;
* (p + 1) = & array ;
* (p + 1) - 6 = & array ;
* (*(p + 1) - 6) = array ; jackz007 发表于 2019-4-21 15:00
知道了,大佬,谢谢
页:
[1]