Dereferencing a null pointer is legal in C. It's the conversion of a null pointer from from an r-value to an l-value that's illegal, which does not happen in that snippet of code.
That's why it's perfectly legal in C to do this (&*foo), even if foo is a null pointer.
> Dereferencing a null pointer is legal in C. It's the conversion of a null pointer from from an r-value to an l-value that's illegal, which does not happen in that snippet of code.
And it does not happen in that snippet of code because sizeof is nothing like a function.
That's why it's perfectly legal in C to do this (&*foo), even if foo is a null pointer.