![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Inventar
![]() Registriert seit: 08.02.2000
Beiträge: 1.696
|
![]() 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. |
![]() |
![]() |
![]() |
#2 |
Inventar
![]() |
![]() 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 ![]() aja wennst ned in linux deine proggies schreibts dann kannst auch void main(void) schreiben und dir am ende das return 0; dasparen
____________________________________
\"Ein Gewitter reinigt die Luft\", sagte der Mann, nachdem ein Blitz seine Frau erschlug Nicht klicken! Erstposteralarm/Beschwerde/Kummerkasten Verplattet |
![]() |
![]() |
![]() |
#3 |
Inventar
![]() Registriert seit: 08.02.2000
Beiträge: 1.696
|
![]() Danke, ist eh klar warum des net funzt!
Jetzt geht es!!! ![]()
____________________________________
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. |
![]() |
![]() |
![]() |
#4 |
Inventar
![]() |
![]() yeaha jeden tag eine gute tat
![]()
____________________________________
\"Ein Gewitter reinigt die Luft\", sagte der Mann, nachdem ein Blitz seine Frau erschlug Nicht klicken! Erstposteralarm/Beschwerde/Kummerkasten Verplattet |
![]() |
![]() |
![]() |
#5 |
Master
![]() |
![]() Entweder du übergibst den Pointer an doit und liferst ihn an die aufrufende funktion mir return zurück und weisst ihn in main zu:
void main() { [...] ptr_first=doit(taste, ptr_first); [...] } Adresse ptr_first doit(char taste, Adresse *ptr_first) { [...] return *ptr_first; } Oder du übergibst einen pointer auf den Pointer. (Finde ich schöner ![]() void main() { [...] doit(taste, *ptr_first); [...] } void doit(char taste, Adresse **ptr_first) { [...] }
____________________________________
__________________ |»»»»»SONIC««««««| ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ |
![]() |
![]() |
![]() |
#6 |
Inventar
![]() |
![]() geh ned doppelpointer
![]() des pfusch hoch 3 ![]() ned ernst nehmen hab halt nur sehr sehr sehr schlecht erfahrungen mit den dinger ![]()
____________________________________
\"Ein Gewitter reinigt die Luft\", sagte der Mann, nachdem ein Blitz seine Frau erschlug Nicht klicken! Erstposteralarm/Beschwerde/Kummerkasten Verplattet |
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|