|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
int main()
{
int array[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
int (*p)[10] = &array;
printf("%d\n", *(*(p+1)-6));
return 0;
}
我的理解:
前提是把这个array看成一个二维数组:
指针p指向整个数组,可以把array看做是一个二维数组,只不过这个二维数组的列为0,写成 int array[10][0],所以p==&array[0],所以p+1==&arrary[1],而array[1]可以看做是第二列的首个元素的地址,
所以 *(p+1)== *(&array[1]) == arrary[1] 能不能这么理解,但是这么理解又得不出答案。
而且array[1]是一个地址,*(p+1)不应该是一个确定的值而不是地址嘛??
我很困惑,希望大佬能够救济一下我,我这个问题困扰我很久了。
而且小甲鱼的说法 怎么理解,答案 4 又是怎么来的???
|
|