[C] J'ai une question...
Résolu/Fermé
pweteur
Messages postés
24
Date d'inscription
vendredi 9 juin 2006
Statut
Membre
Dernière intervention
26 mars 2007
-
20 févr. 2007 à 00:49
pweteur Messages postés 24 Date d'inscription vendredi 9 juin 2006 Statut Membre Dernière intervention 26 mars 2007 - 20 févr. 2007 à 17:34
pweteur Messages postés 24 Date d'inscription vendredi 9 juin 2006 Statut Membre Dernière intervention 26 mars 2007 - 20 févr. 2007 à 17:34
5 réponses
mamiemando
Messages postés
33446
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 décembre 2024
7 812
20 févr. 2007 à 01:06
20 févr. 2007 à 01:06
Bah ca depend du programme :-) En général c'est que ta structure unestruct est dépendante d'une structure de type autrestrcut et qu'on veut la stocker à l'exterieur de la structure unestruct. Les pointeurs ne servent pas forcément à faire des listes chainées, même si c'est l'exemple le plus classique.
Un exemple :
Suppose que tu veuilles faire une liste chainées génériques, la seule façon de t'en sortir c'est de créer une liste chainée de pointeurs générique (de type void *) ce qui donne :
Ca répond à ta question ?
Bonne chance
Un exemple :
Suppose que tu veuilles faire une liste chainées génériques, la seule façon de t'en sortir c'est de créer une liste chainée de pointeurs générique (de type void *) ce qui donne :
typedef struct cell{ struct maillon * next; void * data; // à cette adresse j'ai ma structure, mon int, ce que je veux en fait } cell_t; typedef struct cell * list;
Ca répond à ta question ?
Bonne chance
pweteur
Messages postés
24
Date d'inscription
vendredi 9 juin 2006
Statut
Membre
Dernière intervention
26 mars 2007
20 févr. 2007 à 15:58
20 févr. 2007 à 15:58
merci de ta réponse , donc si je comprend bien l'autre structure, on y a accés depuis la premiére structure ? et le type void je le capte difficilement... peut tu me faire un exemple de type void * pour que je comprenne ce type?
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
20 févr. 2007 à 16:57
20 févr. 2007 à 16:57
oui, tu peu y acceder par l'autre structure.
Une structure, est une variable, elle peut donc être membre d'une autre structure.
struct essai{struct Structure2* s2;};
tu déclare ta variable :
essai *s1;
tu acede à la structure s2:
s1->s2
Pour le void, le plus simple est un exemple par la fonction.
Imagine tu créé une fonction qui utilise une autre fonction de façon générique (par exemple résolution d'une intégrale)
int integrale(void* fonction_a_integrer(void*),(void*) paramètre);
cette fonction est capable de résoudre l'integrale de n'importe quelle fonction avec n'importe quell type.
int* fact(int* N){//...}
double* sqrt(double* a){...}
double *a=5e6;
int* b=2;
tu peux ensuite faire :
integrale((void*)fact,(void*)b);
integrale((void*)sqrt,(void*)a);
C'est entre autre le fonctionnement des thread, où tu fourni une fonction et des paramètres, ne connaissant pas le type a priori, il faut passer par les pointeurs.
Une structure, est une variable, elle peut donc être membre d'une autre structure.
struct essai{struct Structure2* s2;};
tu déclare ta variable :
essai *s1;
tu acede à la structure s2:
s1->s2
Pour le void, le plus simple est un exemple par la fonction.
Imagine tu créé une fonction qui utilise une autre fonction de façon générique (par exemple résolution d'une intégrale)
int integrale(void* fonction_a_integrer(void*),(void*) paramètre);
cette fonction est capable de résoudre l'integrale de n'importe quelle fonction avec n'importe quell type.
int* fact(int* N){//...}
double* sqrt(double* a){...}
double *a=5e6;
int* b=2;
tu peux ensuite faire :
integrale((void*)fact,(void*)b);
integrale((void*)sqrt,(void*)a);
C'est entre autre le fonctionnement des thread, où tu fourni une fonction et des paramètres, ne connaissant pas le type a priori, il faut passer par les pointeurs.
Stupeflip
Messages postés
391
Date d'inscription
jeudi 8 février 2007
Statut
Membre
Dernière intervention
4 décembre 2007
94
20 févr. 2007 à 16:57
20 févr. 2007 à 16:57
Salut,
En fait tu n'as qu'à te dire qu'une structure c'est comme une variable comme une autre.
Par exemple tu as la structure fiche d'identité qui contient les variables nom prénom adresse âge etc
Ensuite tu as la structure CV, qui contient la structure fiche d'identité, les variables cursus, jobs, activités, langues parlées, etc
Ce qui donne bien une structure dans une autre structure, mais tu as quand même accès à la fiche d'identité si jamais tu n'as besoin que de cela :)
En fait tu n'as qu'à te dire qu'une structure c'est comme une variable comme une autre.
Par exemple tu as la structure fiche d'identité qui contient les variables nom prénom adresse âge etc
Ensuite tu as la structure CV, qui contient la structure fiche d'identité, les variables cursus, jobs, activités, langues parlées, etc
Ce qui donne bien une structure dans une autre structure, mais tu as quand même accès à la fiche d'identité si jamais tu n'as besoin que de cela :)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
pweteur
Messages postés
24
Date d'inscription
vendredi 9 juin 2006
Statut
Membre
Dernière intervention
26 mars 2007
20 févr. 2007 à 17:34
20 févr. 2007 à 17:34
Merci à vous pour ces messages kler et bien expliqué :) je comprend beaucoup mieu à présent, encore merci.