int a[5];
cout << &a[1] << " " << &a[0] << endl;
cout << (&a[1] - &a[0]);
In the above code, why is &a[1] - &a[0] equal to 1 and not 4? Shouldn't there be 4 bytes between these addresses since we have an int array?
No, pointer difference is in elements, not in bytes.
To get it in bytes: (see it live https://ideone.com/CrL4z)
int a[5];
cout << (a+1) << " " << (a+0) << endl;
cout << (reinterpret_cast<char*>(a+1) - reinterpret_cast<char*>(a+0));