I have inherited a lot of code and I am stumbling on this expansion. I understand what it does, I don't understand how it does it.

```
#define OFFSETOF(structure, item)     ((u16)&(((structure*)0)->item))

```

To be more specific, I get most of it except this part `((structure*)0)`. I don't get what the zero is doing or what it is there for.

If you need to know, 'structure' is just a `typedef struct{}` and item is a member in the 

```
 struct{
    u32 my_example_item;
}

```

Again, the zero is confusing the heck out of me.