Обычно используется {0} для инициализации struct или array, но рассмотрим случай, когда первое поле не является скалярным типом. Если первым полем struct Person является другой struct или массив, то эта строка приведет к ошибке (error: missing braces around initializer).
struct Person person = {0};
По крайней мере GCC позволяет мне использовать пустой список инициализаций для выполнения того же самого
struct Person person = {};
Но этот допустимый C-код?
Также: гарантируется ли эта строка тем же самым поведением, то есть нулевой инициализированный struct?
struct Person person;