c - Memory in a linked list -


i have been programming simple game in c learn programming, found error in code when work linked list.

here struct:

    typedef struct listshoots * listshoots;      struct listshoots{         shoot d;         listshoots next;     }; 

and functions memory:

    listshoots shoots_create(int x, int y){         listshoots ld = malloc(sizeof(struct listshoots));         ld->d.alto = 10;         ld->d.x = x;         ld->d.y = y;         ld->d.v = 6;         ld->next = null;         return ld;     }      void shoots_shoot(listshoots ld, int x, int y){         listshoots aux = ld;         if(ld==null) printf("ld = null\n");         while(ld!=null) ld = ld->next;         ld = shoots_create(x,y);         ld = aux;         if(ld==null) printf("ld = null (again)\n");     } 

when call function shoots_shoot in main (at first, ld = null), output: ld = null , ld = null (again) too. why? there should first printf, think, because @ first line while(ld!=null) ld = ld->next nothing.

the weird thing is: if remove line ld = aux;, output okay, just: ld = null.

edit: problem is: aux , ld pointing @ same memory because of aux = ld. if reserve memory ld, aux changes , not pointing null, right?

... output: "ld = null" , "ld = null(again)" too. ¿why?

because of

listshoots aux = ld; /* ... */ ld = aux; 

you restoring original value of ld, apparently null, since getting

ld = null 

from

if(ld==null) printf("ld = null\n"); 

Comments

Popular posts from this blog

asp.net mvc - SSO between MVCForum and Umbraco7 -

Python Tkinter keyboard using bind -

ubuntu - Selenium Node Not Connecting to Hub, Not Opening Port -