int arr[5] = {1,2,3,4,5};
arr + 1; //arr 是数组中第一个元素的地址,每个元素是 int 类型的,那么它的访问方式是int型(4个字节) ,arr + 1 是指向了数组中下一个元素的地址,在这个内存中的值是 2
*(&arr + 1) - 1; //&arr 是整个数组的首地址,它的访问方式是 int [5] (20个字节),*(&arr + 1) 就指向了 下一个 数组的第一个元素的地址 ,*(&arr + 1) - 1 就指向了 arr[4]这个元素的地址。
类型只是访问方式不同而已