以下代码输出什么?
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
int a[5] = {1,2,3,4,5};
int *p = (int*)(&a+1);
printf("%d, %d\n", *(a+1), *(p-1));
return 0;
}
答案:2,5
解析:&a其实是代表数组的地址,&a+1则是地址加上数组的长度
而a代表数组首元素的地址,a+1相当与地址加上一个数组元素的长度
(注:数组的地址和数组首元素的地址是相同的)