Herakles
Profifragensteller
Moin!
Ich möchte eine verkette Liste erstellen, bekomme das auch wunderbar hin, wenn ich das in meiner main-Funktion mache.
Irgendwie sehe ich aber bei einem Aufbau dieser Liste in einer Funktion vor lauter Bäumen den Wald nicht. Was mache ich falsch?
Der hier gezeigte Code funktioniert. Sobald man aber das Ganze in die Funktion "liste_aufbauen" auslagert(indem die auskommentierte Zeile einkommentiert wird und dafür die drei Zeilen drüber auskommentiert), funktioniert es nicht.
Also so:
Was muss ich tun, damit es funktioniert?
Danke für jeden Tipp!
Herakles
Ich möchte eine verkette Liste erstellen, bekomme das auch wunderbar hin, wenn ich das in meiner main-Funktion mache.
Irgendwie sehe ich aber bei einem Aufbau dieser Liste in einer Funktion vor lauter Bäumen den Wald nicht. Was mache ich falsch?
Code:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdint.h>
#include <unistd.h>
struct linked_list {
uint8_t data;
struct linked_list *next;
};
void liste_aufbauen(struct linked_list *f) {
f=malloc(sizeof (struct linked_list));
memset(f,1,sizeof (struct linked_list));
f->next = malloc(sizeof (struct linked_list));
}
int main(void) {
struct linked_list *Pfirst_element = NULL;
printf("vor %p\n",Pfirst_element);
Pfirst_element=malloc(sizeof (struct linked_list));
memset(Pfirst_element,1,sizeof (struct linked_list));
Pfirst_element->next = malloc(sizeof (struct linked_list));
//liste_aufbauen(Pfirst_element);
printf("nach %p\n",Pfirst_element);
printf("%d\n",Pfirst_element->data);
exit(0);
}
Der hier gezeigte Code funktioniert. Sobald man aber das Ganze in die Funktion "liste_aufbauen" auslagert(indem die auskommentierte Zeile einkommentiert wird und dafür die drei Zeilen drüber auskommentiert), funktioniert es nicht.
Also so:
Code:
(...)
//Pfirst_element=malloc(sizeof (struct linked_list));
//memset(Pfirst_element,1,sizeof (struct linked_list));
//Pfirst_element->next = malloc(sizeof (struct linked_list));
liste_aufbauen(Pfirst_element);
(...)
Danke für jeden Tipp!
Herakles