Originally Posted by

**laserlight**
i am going to assume that "pointer of fifth byte of the array" is a typo for "pointer to the fifth element of the array", and that the "fifth element of the array" is at index 4. Likewise, "2nd byte" is a typo for "2nd element". You cannot freely use "byte" and "element" interchangeably because an int almost certainly consists of more than one byte.

When you validly subtract one pointer from another, you get a signed integer result of type ptrdiff_t, i.e., x - y would give you 3. This means that y is "3 steps" from x, as in y points to an element that is 3 elements away from what x points to, and indeed y points to the element at index 1 and x points to the element at index 4, and 1 + 3 = 4.