#include<stdio.h>
int main()
{
int a[5] = {1,2,3,4,5};//数组在内存中开辟的空间是连续的 a 和&a的的值相同,取得是首元素地址的值 但意义不同 &a是取整个数组的地址
int *ptr1 = (int *)(&a+1); //加1是加整个数组的长度 ptr1指向了5后边的位置
int *ptr2 = (int *)((int)a + 1);//把a的首地址转化成整型再加1相当于ptr2向后指了一个字节 01 00 00 00 02 00 00 00 03 00 00 00 ...//每个字节对应一个地址
printf("%d\n%x\n",ptr1[-1],*ptr2);
return 0;
}
输出结果为
5
2000000