2014-11-10 3 views
0

Эй, ребята, мне нужна помощь. Я пытаюсь сохранить шрам-структуру в массив Шрама внутри структуры SOwner, для каждого из различных SOwner, хотя я получаю эту ошибку:Скопируйте структуру в массив структур

Incompatible types when assigning to type 'Scar' from type 'struct SCar *'

Вот код:

typedef struct { 
char name[40]; 
SCar cars [100]; 
} SOwner; 

typedef struct { 
char color[40]; 
char brand[12]; 
} SCar; 

SOwner *ownerPTR; 
SCar *carPtr 

void function(){ 
for(i=0; i<10 ; i++){ 
    (ownerPtr)->cars[i] = (carPtr+i); // Problem here <<<-- 
} 

Есть ли простой способ сделать это? Спасибо

+0

просто 'ownerPtr-> автомобили [я] = carPtr [я];' – jweyrich

+0

В общем случае, если код не работает, обрежьте его вниз к простейший пример, который не работает, что в данном случае будет чем-то вроде 'int n; int * p; п = р; '. – Beta

ответ

3

Вы должны разыменовать указатель справа, чтобы сгенерировать значение типа SCar.

Как так:

ownerPtr->cars[i] = carPtr[i]; 

или

ownerPtr->cars[i] = *(carPtr + i); 

Но последнее просто более сложный способ, чтобы написать первый, так что просто использовать индексацию.

0

вы должны определить массив указателей

typedef struct { 
    char name[40]; 
    SCar * cars [100]; 
} SOwner; 
+0

Не нужно касаться определения структуры, если OP не хочет избежать неявного копирования «SCar's». – jweyrich

Смежные вопросы