Не буду говорить точно, но это, скорее всего, определено не стандартом языка, а реализацией (ББ). Инициализируется в 0 только динамическая память и указатели. Если смотреть дизассемблированный код, то видно, как при старте процедуры инициализатор аккуратно затирает все локальные указатели, перепрыгивая через остальные поля...