On a 16 bit platform an Int = 2 bytes , while on a 32 bit system an Int = 4 bytes
so have an offset of either 2, or 4 to move the Pointer 'p' by.
a 'plain' int usually is the standard of the platform.. 16 bit, 32 bit etc. i.e. a 'long' on 16 bit was a 32 bit int, while a long on a 32 bit platform is 64 bit
We start off by pointing at "ab", so move it twice and you end up pointing at "ef". Then you need index -1, which brins you back to "cd".
On 32 bit you'd move it 4 total: ->Ab ; ->cd (+1) ; -> ef (+2) ; ->gh(+3) ; ->ij(+4). So we end up at "ij". Then again index -1 which is basically just taking one step back so on 32 bit you'd end up with "gh"