Orjanp Skrevet 22. mars 2004 Del Skrevet 22. mars 2004 (endret) Noen som kan si hva som er feil i denne kodesnutten, laget i C. #include<stdlib.h> #include<stdio.h> struct list_el { int val; struct list_el * next; }; typedef struct list_el item; void list(item *c, item *h, int i) { c = (item *)malloc(sizeof(item)); c->val = i; c->next = h; h = c; } void main() { item * curr, * head; int i; head = NULL; for(i=1;i<=10;i++) { list(&curr, &head, i); } curr = head; while(curr) { printf("%d\n", curr->val); curr = curr->next; } } Får følgende feilmelding. linked.c: In function `main': linked.c:26: warning: passing arg 1 of `list' from incompatible pointer type linked.c:26: warning: passing arg 2 of `list' from incompatible pointer type linked.c:19: warning: return type of `main' is not `int' Endret 23. mars 2004 av Orjanp Lenke til kommentar
kjetil7 Skrevet 22. mars 2004 Del Skrevet 22. mars 2004 Kommer av at du sender inn en peker til peker (item**) til list() funksjonen. Men list() funksjonen din tar kun pekere til item (item*). Du må modifisere list() funksjonen din til å motta item** pekere. Eksempel: void list(item **c, item **h, int i) { *c = (item *)malloc(sizeof(item)); (*c)->val = i; (*c)->next = *h; *h = *c; } Den siste warningen fjerner du ved å bytte ut "void main()" med "int main()" (main skal returnere en int ifølge standarden) Lenke til kommentar
A_N_K Skrevet 22. mars 2004 Del Skrevet 22. mars 2004 Se på parameterne til funksjon list; den tar imot to pekere og en int, du gir den ikke pekere, men pekere til pekere (dvs. adressen av pekere). Lenke til kommentar
Orjanp Skrevet 23. mars 2004 Forfatter Del Skrevet 23. mars 2004 Takk så mye, da fungerte det. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå