2014-09-30 2 views
-3

Привета народа У меня есть вопрос, Как бы идти о правильно выделении памяти для моих структуры элементов, я получаю две ошибки: Invalid применения «SizeOf» к «структуре автомобиля» неполного типа и «numberCar» необъявлен (сначала используется в этой функции). Не могу найти корень вопроса здесь ...Динамически выделить память для структуры элементов

typedef struct { 
    int numberCar; 
    int carStatus; 
    int** droveCar; 
    int currentCar[2]; 
} Car; 

int init(struct Car *cars, int argc, char** argv) { 
    int i, j; 

    cars = malloc (3 * sizeof(struct Car)); 

    for (i = 0 ; i < numberCar ; i++) { 
     droveCar[i]=malloc(10 * sizeof(int)); 
    } 

    for (j = 0; j < numberCar; i++) { 
     cars[i].droveCar = (int**) malloc(numberCar * sizeof(int*)); 
    } 
} 

Я также initalised в основной:

int main() { 
    struct Car *cars; 

    /......./ 

    return 0; 
} 
+0

'ЬурейеЕ struct {'->' typedef struct Car {'или' struct Car' -> 'Car' – BLUEPIXY

+0

BTW' cars = malloc (3 * sizeof (struct Car)); ': это не переписать orignal (' struct Car * автомобили; '). – BLUEPIXY

+0

не говоря уже о том, что 'numberCar' не определен в функции' init'. – isedev

ответ

0

Возможно, что-то вроде следующего

#include <stdlib.h> 

typedef struct Car { 
    int numberCar; 
    int carStatus; 
    int** droveCar; 
    int currentCar[2]; 
} Car; 

void init(Car *car, int numberCar) { 
    int i; 

    car->numberCar = numberCar; 
    //car->carStatus = 0; 
    //car->currentCar[0] = car->currentCar[1] = -1; 

    car->droveCar = malloc(numberCar * sizeof(int*)); 
    for (i = 0 ; i < numberCar ; i++) { 
     car->droveCar[i] = calloc(10, sizeof(int)); 
    } 
} 

int main() { 
    struct Car *cars; 
    int i; 

    cars = calloc(3, sizeof(Car));//struct Car cars[3];// 3 Cars 
    for(i = 0; i < 3; ++i) 
     init(&cars[i], 3); 

    //deallocate 
    return 0; 
} 
Смежные вопросы