KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
So, I have some code, kind of like the following, to add a struct to a list of structs: void barPush(BarList * list,Bar * bar) { // if there is no move to add, then we are done if (bar == NULL) return;//EMPTY_LIST; // allocate space for the new node BarList * newNode = malloc(sizeof(BarList)); // assign the right values newNode->val = bar; newNode->nextBar = list; // and set list to be equal to the new head of the list list = newNode; // This line works, but list only changes inside of this function } These structures are defined as follows: typedef struct Bar { // this isn't too important } Bar; #define EMPTY_LIST NULL typedef struct BarList { Bar * val; struct BarList * nextBar; } BarList; and then in another file I do something like the following: BarList * l; l = EMPTY_LIST; barPush(l,&b1); // b1 and b2 are just Bar's barPush(l,&b2); However, after this, l still points to EMPTY_LIST, not the modified version created inside of barPush. Do I have to pass list in as a pointer to a pointer if I want to modify it, or is there some other dark incantation required?
Tags (comma-separated)
Save Edits
Cancel