Указатель car3
не был установлен, чтобы указывать на что-либо, поэтому его значение является неопределенным.Когда вы затем попытаетесь прочитать это недопустимое значение и разыменовать его как указатель, вы вызываете неопределенное поведение , которое в этом случае приводит к сбою вашего кода.
Вы можете указать car3
насуществующий экземпляр структуры:
car3 = &car2;
В этом случае, пройдя car3
, вы получите именно то, что хранится в car2
.Или вы можете динамически распределять память для car3
, чтобы указывать на:
car3 = malloc(sizeof *car3);
Затем убедитесь, что free(car3)
, когда вы закончите, используя его.