I&#x27;m a bit curious how a pointer with value 0 ended up being banned by C.  Specifically, on x86 real mode (which includes modern systems early in boot before switching to protected mode), there&#x27;s a hardware defined data structure at address zero: the &quot;Interrupt Vector Table&quot;.<p>Maybe everyone who wrote real-mode systems software either ignored that bit of the C standard, or they fudged around it (IIRC the IVT is an array and the first entry doesn&#x27;t matter, so you can start a few bytes past zero), or they used assembly to access it.