Не инициализируется структура Си
Когда я просто инициализирую структуры к нулю внутри "мэйна" все в порядке всё работает.
Но когда когда этаже структура является вложенной в другую структуру, оно выдаёт ошибки:

Если это делат даже не просто в структуре а в функции где я создаю объект даной структуры, всё еще выдаёт туже ошибку.
Подскажите чем это вызвано и как всё-таки привести вложенную структуру к нулю.
Ответы (1 шт):
Не позволяет такого синтаксис. Вы втором случае Вы пытаетесь инициализировать переменную в объявлении структуры. А оно так не работает. Нет в С конструкторов, поэтому и такая конструкция не работает. Даже так не работает
struct private {
int a = 0;
int b = 1;
};
Но никто не мешает сделать так
struct private p = {0};
и все будет работать. Даже если есть вложенные структуры
в третьем случае Вы простите компилятор переменной присвоить ноль... а оно так не умеет. Самый надежный способ - позвать memset
memset(p, 0, sizeof(struct private));
Главное быть осторожным и не перепутать 2 и 3 параметр и не искать размер указателя, вместо размера структуры.
А первый пример работает, потому что там объявляется уже переменная (которая имеет место в памяти), а не структура (которая по факту чертеж памяти).



