c - I can't figure out my pointer error -
i new c. have problem can't 2 pointers point same space in memory. here code.
struct io{ int val; char* name; }; struct gate{ enum gatetype type; struct gate* next; int numinputs; struct io* outputs; struct io* inputs; }; in main have
struct gate* tempgate; tempgate = (struct gate*)malloc(sizeof(struct gate)); struct io* iolist; iolist = (struct io*)malloc(sizeof(struct io)*20); tempgate->inputs = (struct io*)malloc(sizeof(struct io*)*2); tempgate->outputs = (struct io*)malloc(sizeof(struct io*)); later in nested loop have this
tempgate->inputs[j] = iolist[i]; now when change value of iolist[i], shouldn't tempgate->inputs[j] change well? if not why? how can make case? me codiwan you're hope.
you should make inputs , outputs arrays of pointers io, not arrays of io. can make elements of array point elelemnts of iolist.
struct gate{ enum gatetype type; struct gate* next; int numinputs; struct io** outputs; struct io** inputs; }; tempgates->inputs = malloc(sizeof(struct io*)*2); tempgates->outputs = malloc(sizeof(struct io*)); then loop should be:
tempgate->inputs[j] = &(iolist[i]); then when change iolist[i].val, change value of tempgate->inputs[j]->val.
Comments
Post a Comment