Wiem, że na internecie jest od groma przykładów na stworzenie listy jednokierunkowej, jednak mój program jest dość specyficzny i nie mogę wykminić, co jest w nim nie tak.
Struktury prezentują się następujaco:
typedef struct l_zesp
{
union Rzecz
{
int a_int;
double a_double;
} rzeczywista;
int uroj;
int is_double;
} L_zesp;
typedef struct container
{
L_zesp* zesp;
struct container* next;
} Container;
Funkcja dodająca:
void add(Container* glowa,L_zesp* zespol) {
Container* e, *tmp;
e = (Container*) malloc(sizeof(Container));
e->zesp=zespol;
if (glowa == NULL)
{
e->next = glowa;
glowa = e;
}
else
{
tmp = glowa;
while (tmp->next != NULL)
tmp=tmp->next;
tmp->next = e;
e->next = NULL;
}
}
Oraz program główny:
int main()
{
Container *glowa=NULL;
L_zesp* k;
k=(L_zesp*) malloc (sizeof(L_zesp));
k->rzeczywista.a_double=6.33;
k->uroj=3;
k->is_double=1;
add(glowa,k);
return 0;
}
Po zabawie debuggerem doszedłem do tego, że w chwili wychodzenia z procedury add głowa tak jakby "traci" swoją wartość i na powrót staje się nullem. W jaki sposób można by temu zaradzić?