Иногда данные по адресу памяти 0x0 весьма ценны - возьмите X86 real mode IVT как более известный пример: он начинается с 0x0 и содержит указатели на прерывания обработчиков: dword at 0x00 является указателем на деление на нулевой обработчик ошибок.
Однако стандарт языка C11 запрещает разыменовывать нулевые указатели [WG14 N1570 6.5.3.2], которые определяются как указатели, инициализированные нулевыми или указательными инициализированными с нулевым указателем [WG14 N1570 6.3.2.3], фактически запрещающим самый первый байт.
Как люди действительно используют 0x0, когда это необходимо?