struct Name myname = { {0}};
близко
предупреждение: отсутствует инициализатор для поля 'middleInitial' из 'имя структуры' [-Wmissing-field-initializers]
{0}
достаточно. @ machine_1
Альтернатива, указанная ниже.Это зависит от того, насколько выразительным вы хотите быть.
struct Name {
char firstName[31];
char middleInitial[7];
char lastName[36];
};
// struct Name myname = { {0}};
struct Name myname1 = {0};
struct Name myname2 = { {0}, {0}, {0}};
struct Name myname3 = { "", "", "" };
struct Name myname4 = { .firstName = "", . middleInitial = "", .lastName = "" };
struct Name myname5 = { .firstName = "" };
struct Name myname6 = { { [0] = 0 }, "", {0}};
// many others
В C инициализируется либо все объекта, либо ни одного из него, без частичной инициализации.
Когда инициализация не завершена, остальное заполнено чем-то, что обычно представляет собой биты нулей.Подробности, подходящие для другого вопроса.
Примечание: если бы struct Name myname
находилось в глобальном пространстве или static
, оно получило бы инициализацию по умолчанию «ноль», даже без явного инициализатора.
struct Name myname;
int main() {
printf("<%s>\n", myname.firstName); // prints "<>\n"
}