C: Incompatible type on dynamic array of pointers of structure -
i need declare dynamic array of pointers. read articles , similar questions , try project still frozen.
what i'm trying do:
typedef struct recarmario armario, *parmario; struct recarmario { int id; parmario next; parmario prev; pcorredor parent; }; parmario auxarmariotest1 = malloc(sizeof(armario)); auxarmariotest1->id = 1; parmario auxarmariotest2 = malloc(sizeof(armario)); auxarmariotest2->id = 2; (…) //dynamic array of pointer armario: parmario arrarmariospointers = malloc(sizeof(parmario) * maxcorredores); //here doubt *(arrarmariospointers + idcorredor) = auxarmariotest1; xcode saying:
assigning 'struct recarmario' incompatible type 'parmario' (aka 'struct recarmario *'); dereference * i don't understand, "assigning 'struct recarmario'"?! declare 1 array of parmario, think so.
*(arrarmariospointers + idcorredor) equivalent arrarmariospointers[idcorredor], right?
update 1:
thanks answers! update sample , still have problems.
parmario auxarmariotest1 = malloc(sizeof(armario)); auxarmariotest1->id = 1; parmario auxarmariotest2 = malloc(sizeof(armario)); auxarmariotest2->id = 2; //dynamic array of pointer armario: parmario arrarmariospointers = malloc(sizeof(parmario) * 5); //test parmario auxa; auxa = arrarmariospointers + 0; //i know, it's useless :) auxa = auxarmariotest1; auxa = arrarmariospointers + 1; auxa = auxarmariotest2; printf("\na%d",(arrarmariospointers+0)->id); printf("\na%d",(arrarmariospointers+1)->id); free(auxarmariotest1); free(auxarmariotest2); the result is:
a0 a0 what i'm doing wrong, again?
update 2:
forget update 1, dumb. i'm changing auxa.
solution:
parmario* arrarmariospointers = malloc(sizeof(parmario) * 5); arrarmariospointers[0] = auxarmariotest1; arrarmariospointers[1] = auxarmariotest2; printf("\na%d",arrarmariospointers[0]->id); printf("\na%d",arrarmariospointers[1]->id); thanks everyone.
*(arrarmariospointers + idcorredor) = auxarmariotest1; here arrarmariospointers + idcorredor parmario or struct recarmario *, dereferencing give struct recarmario assign auxarmariotest1 struct recarmario *. in short, assigning pointer struct, error
for update 1, may trying achieve?
parmario * arrarmariospointers = malloc(sizeof(parmario) * 5); arrarmariospointers[0] = auxarmariotest1; arrarmariospointers[1] = auxarmariotest2; printf("\na%d",(arrarmariospointers[0])->id); printf("\na%d",(arrarmariospointers[1])->id);
Comments
Post a Comment