Вы выделяете массив структур, но объявляете массив указателей.
Calloc () и malloc () возвращают объект void *, который может быть назначен на все. Таким образом, даже с -Wall
ваша программа будет компилироваться без предупреждений.
Однако, когда он запускается, он пытается разобраться с тем, что вы сказали, было массивом указателей, фактически массивом указателей на указатели на указатели. Ни один из этих указателей никогда не создается. Все, с чего вы начинаете, это одноуровневые указатели на массив объектов. В зависимости от того, что вы действительно хотите, вам может понадобиться что-то похожее на ...
array_ref[2] = &array[0];
array_ref[3] = &array[1];
return 1;
}
int main()
{
person *array, *array_r_real;
person **array_r;
array = calloc(5, sizeof(person));
array_r_real = calloc(5, sizeof(person));
array_r = calloc(5, sizeof(struct unit_class_struct *));
int i;
for (i = 0; i < 5; ++i)
array_r[i] = &array_r_real[i];
setName(array, array_r);