# include <stdio.h>
int main(void)
{
int a[5] = {1, 2, 3, 4, 5};
int *ptr = (int *)(&a+1);
printf("%0x\n", &a);
printf("%0x\n", &a+1);
printf("%0x\n", ptr);//指向数组最后一个元素的下一个地址空间
printf("%d\n", *ptr);//垃圾值
printf("%0x\n", ptr-1);
printf("%0x\n", ptr-2);
printf("%d %d\n", *(a+1), *(ptr-1));
printf("%d %d\n", *a+1, *(a+1));
return 0;
}
/*
a和&a的地址相同,但表示的意义是不同的
a表示的意义应该是第一个元素的地址
&a表示的是整个数组的地址,以这一个地址表示所有的元素地址,代表的是一个整体
*/
result: