You basically wrote this: ar+1-ar. There's two possibilities here:
1. The compiler rearranged the operations. ar-ar+1 ar-ar+1 1
2. The result is given in pointer arithmetic. Always remember that if int *a, and *a==1, *(a+1) won't give you a value between two ints.
Yes, the distance between them is 4 bytes. ints, however, are (in this case) dwords. The distance between them is 1 dword.
If you want to get the distance in bytes, you need to cast the pointers to void * before doing the subtraction.
Because when you set up arrays then they are set up as 0, 1, 2, 3, 4, 5 and not 1, 2, 3, 4, 5. So if you call &ar[0] then you are calling the pointer to 3. Am I wrong here?