ich weiss jetzt nicht ob ich das richtig versteh du willst das der pointer ptr ins main zurückgegeben wird oder nicht? wenn ja dann solltest du ihn auch zurückgeben, denn wenn du in ein unterprogramm einen wert übergibts ist es nur eine kopie vom anfäglichem pointer und du kannst ändern was du willst aba im hauptprogramm wird der zeiger immer den ursprünlichen wert haben
deswegen variblen zurückgeben mit 'return <varname>;'
Adresse * insert(Adresse *ptr_first, Adresse *ptr_tmp)
{....
return ptr;//am ende vom up
}
void doit(char taste, Adresse *ptr_first)
{
Adresse *x;
...
x=insert(Adresse *ptr_first, Adresse *ptr_temp);
//jetzt hat x den wert den es in insert verändert wurde
...
}
das sollte dein prob beheben wenns war is

das gleiche kannst dann mit main auch machen
aja wennst ned in linux deine proggies schreibts dann kannst auch
void main(void) schreiben und dir am ende das return 0; dasparen