Ciao a tutti
C'è qualcosa che non mi quadra nell'assegnamento delle funzioni ad altre funzioni.
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;
}
La prima x riesce a stamparmela.
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!