Je m'attaque à la compréhension d'un concept très peu utilisé en langage C mais j'aimerais comprendre quand meme donc si il y a des gens qui capte ce concept
Je vous lache un bout de code comme exemple
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 /************************************************************** * * * ------------------------- list.h ------------------------ * * * **************************************************************/ #ifndef LIST_H #define LIST_H #include <stdlib.h> /*************************************************************** * * * Définition de la structure pour les éléments de la liste * * * ***************************************************************/ typedef struct ListElmt_ { void *donnee; struct ListElmt_ *suivant; } ListElmt; /**************************************************************** * * * Définition d'une structure pour les listes chaînées * * * ****************************************************************/ typedef struct List_ { int taille; int (*corresp)(const void *val1, const void *val2); void (*detruire)(void *donnee); ListElmt *tete; ListElmt *queue; } List; /*************************************************************** * * * ----------------- Interface publique --------------------- * * * ***************************************************************/ void list_init(List *liste, void (*detruire)(void *donnee)); void list_destroy(List *liste);Alors mon truc c'est que je sais pas du tout comment dans mon main je vais pouvoir utiliser les structures et les fonctions que j'ai mise (init et destroy) à cause de ces pointeurs de fonction.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82 /************************************************************ * * * ------------------------ list.c ----------------------- * * * ************************************************************/ #include <stdlib.h> #include <string.h> #include "list.h" /*********************************************************** * * * ---------------------- list_init --------------------- * * * ***********************************************************/ void list_init(List *liste, void (*detruire)(void *donnee)) { /************************************************************ * * * Initialisation de la liste. * * * ************************************************************/ liste->taille = 0; liste->detruire = detruire; liste->tete = NULL; liste->queue = NULL; return; } /************************************************************* * * * ---------------------- list_destroy -------------------- * * * *************************************************************/ void list_destroy(List *liste) { void *donnee; /************************************************************* * * * Suppression de chaque élément. * * * *************************************************************/ while (list_size(liste) > 0) { if (list_rem_next(liste, NULL, (void **)&donnee) == 0 && liste->detruire != NULL) { /***************************************************** * * * Appel d'une fonction utilisateur pour libérer * * les données allouées dynamiquement. * * * *****************************************************/ liste->detruire(donnee); } } /************************************************************ * * * Aucune opération n'est encore permise, mais on nettoie * * la structure par précaution. * * * ************************************************************/ memset(liste, 0, sizeof(List)); return; }
Donc si quelqu'un y arrive ca m'interesse
Merci d'avance.
Partager