Using offsetof you can make calculations between members without having to get hold of a variable of that type. All you need is the type itself and the name of the member.
A note why plain calculations are likely not to work out: data alignment. You do not know the amount of padding your compiler is going to throw at your structure and this can lead to very subtle mistakes or make seemingly correct calculations wrong if you change the structure.