代码:1
2
3
4
5
6
7
8
9
10
11
12
int main(void)
{
int a[5] = {1, 2, 3, 4, 5};
int *ptr = (int *)(&a + 1);
printf("%d %d\n", *(a + 1), *(ptr - 1));
system ("pause");
return 0;
}
输出:1
22 5
请按任意键继续. . .
从输出 2 可见a
是和a[0]
是一样的;
&a + 1
移动的是一个整个数组的长度,(int *)(&a + 1)
强制类型转换为 int 型,*(ptr - 1))
再往后移动一个 int,所以输出的是 5。