Позволяет говорят, что у меня есть следующее:
CHARLINK * _init_link(CHARLINK **link)
{
short i;
(*link)->cl = (CHARLINK **) calloc(NUM_CHARS, sizeof(CHARLINK *));
for (i = 0; i < NUM_CHARS; i++)
(*link)->cl[i] = NULL;
return (*link);
}
Цикл должен инициализировать каждый элемент для ОБНУЛЕНИЯ необходимый, или они являются автоматически ПУСТЫМИ от calloc?
Да, присвоение NULL в цикле необходимо. calloc
инициализируется всеми битами 0. Но нулевой указатель может быть представлен не так. Это зависит от реализации. Поэтому необходимо присваивание.
Это немного зависит от вашей системы, но в подавляющем большинстве случаев это нормально. calloc ()
возвращает буфер, заполненный нулями. Однако нулевой указатель на вашем компьютере может не быть битовой комбинацией 0. На машине, где нулевой указатель не равен нулю, вы можете столкнуться с проблемами.