#include
int main()
{
char *p;
char a[10]={1,2,3,4,5,6,7,8,9};
p=&(a+1)[3]; //这句是什么意思啊??
printf("%d",*p);
}
a[10] a就是一个首地址 指向 1
(a+1) 首地址加一 指向 2
(a+1)[3] 在偏移三位 指向5
p= &(a+1)[3] 取地址 5所在的地址赋给p 最后输出*p (p 指向的那个数据) 5
把(a+1)[3]的地址赋给p,a是a[10]的首地址,a+1则为a[10]的第二个元素的地址,(a+1)[3]则为从a[10]的第二个元素起,从零数到三即为(a+1)[3]的值。
这样,p就得到了这个地址,所以打印出来的*p就是a[4]的值。