Reinterpreting the underlying type of a pointer does not change its address. But pointer arithmetics yields different result depending on the pointer type. So what you have described here is perfectly correct and that is what I would expect. See pointer arithmetics.