Используйте универсальный инициализатор: {0}
.
Универсальный инициализатор работает для чего угодно и инициализирует элементы до 0 (NULL
для указателей, 0
для целых, 0.0
для двойных, ...):
struct myStruct example1 = {0};
struct myStruct example2[42] = {0};
struct myStruct *example3 = {0};
Редактировать для динамически размещаемых объектов.
Если вы выделяете память динамически, используйте calloc
вместо malloc
.
p = malloc(nelems * sizeof *p); /* uninitialized objects; p[2] is indeterminate */
q = calloc(nelems, sizeof *q); /* initialized to zero; q[2] is all zeros */
С помощью realloc (и, возможно, других ситуаций) вам необходимо memset
.