dragonabllz
Ensign
- Registriert
- Mai 2011
- Beiträge
- 254
Zuerst mal den Code:
Ich bin noch C Anfänger und befasse mich momentan mit Pointern und Struct.
Wie man sieht ist in der Methode "append" eine Abfrage "if(tmp != NULL)", was darauf schließt, dass wenn ein leerer Pointer auf einem Struct (siehe in der main 'head') übergeben wird, die Zeile 'tmp=new' ausgeführt wird.
Jedoch wenn ich die Main-Methode ausführe wird nix ausgegeben.
Wie kann man sich das erklären? Soweit ich das verstanden habe, überge ich mit "(append, head, 5)" den Inhalt des Pointer Head, was halt auf NULL zeigt, also die Adresse wo NULL steht übergebe ich ?
Ich kann mir das deshalb nicht erklären warum das nicht funktionieren will...
Code:
struct element {
struct element *next;
int x;
};
void append(struct element *list, int nr) {
struct element *tmp = list;
struct element *new;
if ((new = (struct element *) malloc(sizeof(*new))) == NULL) {
printf("Malloc failed!");
exit(0);
}
new->x = nr;
new->next = NULL;
if (tmp != NULL) {
while (tmp->next != NULL) {
tmp = tmp->next;
}
tmp->next = new;
} else {
tmp = new;
}
}
void printliste(struct element *l) {
struct element *liste;
liste = l;
printf("%d\n", liste->x);
while (liste->next != NULL) {
liste = liste->next;
printf("%d\n", liste->x);
}
}
int main(void) {
struct element* head = NULL;
append(head, 5);
append(head, 6);
append(head, 7);
printliste(head);
return 0;
}
Ich bin noch C Anfänger und befasse mich momentan mit Pointern und Struct.
Wie man sieht ist in der Methode "append" eine Abfrage "if(tmp != NULL)", was darauf schließt, dass wenn ein leerer Pointer auf einem Struct (siehe in der main 'head') übergeben wird, die Zeile 'tmp=new' ausgeführt wird.
Jedoch wenn ich die Main-Methode ausführe wird nix ausgegeben.
Wie kann man sich das erklären? Soweit ich das verstanden habe, überge ich mit "(append, head, 5)" den Inhalt des Pointer Head, was halt auf NULL zeigt, also die Adresse wo NULL steht übergebe ich ?
Ich kann mir das deshalb nicht erklären warum das nicht funktionieren will...