This means that after
int a[] = { 1, 2 };
float b;
perhaps that (void *) &a[2] == (void *) &bcan be compared as true.
&a[2](or, which is the same thing a+2) is a pointer only for the end a, because the array contains only elements with indices 0 and 1.
( a[2] &a[3]), , , , , , , , , , .