Adressrückgabe in C
Ich hab da ein kleines Problem:
Die Funktion insert sollte den Zeiger ptr_first so verändern können, dass auch in Main bekannt ist, wo dieser hinzeigt. Aber in der Funktion doit wird schon nur 0x00000000 zurückgegeben -> kann mir da wer helfen?!?!
Danke!!
======================================
typedef struct _adresse
{ [...]
struct _adresse *ptr_next; // Zeiger auf nächsten Datensatz
}Adresse;
int main()
{
[...]
Adresse *ptr_first = NULL; // Zeiger auf das 1. Element
[...]
doit(taste, ptr_first);
[...]
}
void doit(char taste, Adresse *ptr_first)
{
Adresse tmp;
switch(taste)
{
[...]
case 'e':
case 'E': // Datensatz einlesen
einlesen(&tmp); // Einlesen funzt
insert(ptr_first, &tmp); // ptr_first ist immer NULL!!!!
break;
default: break;
}
}
void insert(Adresse *ptr_first, Adresse *ptr_tmp)
{ // Einfügen in Liste (an richtiger Position!!)
Adresse *ptr_neu; // Zeiger auf neuen Datensatz
Adresse *ptr_akt = ptr_first;
Adresse *ptr_old = ptr_first;
ptr_neu = malloc(sizeof(Adresse)); // Speicher reservieren
[...]
// Zeiger verbiegen
ptr_neu->ptr_next = NULL;
ptr_first = ptr_neu;
}
____________________________________
Sex is like hacking. You get in, you get out, and you hope you didnt leave something behind that can be traced back to you.
|