Вам не нужны двойные косвенные указания!Простой указатель на CAR может указывать на разные CAR.
Создайте пространство для нужного вам количества CAR: ok
Можно легко сделать указатель на первый CAR в этом пространстве, чтобы указать надругие CAR.
CAR *cars = malloc(sizeof(CAR));
, если malloc не выдал ошибку cars
указывает на место, достаточно большое, чтобы вместить 1 CAR
cars = realloc(cars, n * sizeof(CAR));
если realloc не завершился с ошибкой cars
теперь указывает на пространство, достаточно большое, чтобы вместить n
автомобилей
, передать этот указатель на ваши функции, а также количество автомобилей, на которые он указывает
getCars(cars, n);
и использовать указатель в функциях
int getCars(CAR *cars, int n)
{
int i = 0;
for (i=0; i<n; i++)
{
/* here, cars[0] is the first car; cars[1] is the second ... */
/* we can pass the address with &cars[i] */
/* or make arithmetic with the pointer itself: */
newCar(cars+i);
}
return 0;
}