Ciao a tutti![]()
C'è qualcosa che non mi quadra nell'assegnamento delle funzioni ad altre funzioni.
La prima x riesce a stamparmela.codice:typedef struct elem { void *key; /** chiave */ struct elem *next; /** informazione */ } node; typedef struct { node *head; /** la testa della lista */ int (*compare) (void *, void *); /** la funzione per confrontare due chiavi */ void *(*copyk) (void *); /** la funzione per copiare una chiave */ } list; int compare_int(void *a, void *b) { int *ai, *bi; ai = (int *) a; bi = (int *) b; return ((*ai) - (*bi)); } void* copy_int(void *a) { int *ai; if ( ( ai = malloc(sizeof(int) ) ) == NULL ) return NULL; *ai = *(int *) a; return (void *) ai; } list new_int_list(void){ list nwl; nwl.head = NULL; nwl.compare = compare_int; nwl.copyk = copy_int; } int main(){ list nwl; int a=1,b=2,c=3; int *x; nwl = new_int_list(); printf("Risultato : %d \n",nwl.compare(&a,&b)); x = (int *) copy_int(&a); printf("Risultato : %d \n",*x); x = (int *) nwl.copyk(&a); printf("Risultato : %d \n",*x); return 0; }
Alla seconda mi da errore di segmentazione.
Ma questo è molto strano, visto che ho assegnato a copyk = copy_int???
Aiutatemi, non ci capisco più nulla!

Rispondi quotando
