I would like to get some help with the following question.
I have a struct Node and I want to change it’s insides using some method.
and I want to print the content of the changed struct inside my main method.
how do I get the struct changed and see the changed value in my main without returning the node as a return value.
I guess it might be solved with passing the struct Node as a pointer and then editing it.
what is the right way to do so?
for example:
typedef struct Node{
struct Node * right;
struct Node * left;
void * data;
}Node;
void insert(void * element, Node* root){
if(root==NULL){
root=(Node*)malloc(sizeof(Node));
root->data=element;
}
}
int main(){
Node a;
int b=8;
insert(&b,&a);
printf("%d",*(int*)a.data);
return 0;
}
printf doesn’t print 8 it prints 1 (i guess some garbage)
It sounds like you are trying to do the following
If so then the way to do this in C is by passing the
structas a pointer toexample.EDIT
Responding to the updated question.
To see the result of a modification of a
Nodeyou must pass aNode*. And accordingly to see the result of aNode*modification you need to pass aNode**. Essentially you need to pass one more level of indirection than the value you want to mutate / return.