Je suis tombé sur un bout de code qui illustre ce que je ne comprend jamais (ou presque) so WTF :mrgreen:
voilà:
void greeting(void (*fp)(void *), void *q);
mais qu'eeeest-ce que ça veut dire :(:lol:
Version imprimable
Je suis tombé sur un bout de code qui illustre ce que je ne comprend jamais (ou presque) so WTF :mrgreen:
voilà:
void greeting(void (*fp)(void *), void *q);
mais qu'eeeest-ce que ça veut dire :(:lol:
Salut,
Ca en fait, ca veut dire ceci, dans l'odre de gauche à droite pour la lecture:Code:void greeting(void (*fp)(void *), void *q);
- Fonction greeting qui ne renvoie pas de valeur et qui prend 2 arguments :
- Argument 1 : Pointeur de fonction ne renvoyant aucune valeur et qui prend comme argument un pointeur sur void (pointeur générique)
- Argument 2 : pointeur sur void
Ca te va ? ;)
D'accoord là c'est plus claire, non c'est juste que je ne suis pas habitué à utiliser des *void encore moins pour les valeurs de retour des fonctions, mais maintenant si fp ne renvoit aucune valeur, comment peuve-t-on la passer comme argument à greeting?
autre chose! void *q c'est logique, un pointeur générique, mais: (void *) !!! un pointeur qui ne pointe sur rien du tout? et qui de plus n'a pas de handle? ce n'est pas très évident pour moi?
merci beaucoup Franck :P
Il n'y a pas de *void mais des void *Citation:
c'est juste que je ne suis pas habitué à utiliser des *void
Ce n'est pas la valeur de retour de la fonction qui est passée mais la fonction. On peut s'attendre que dans la fonction greeting figure un appel à la fonction passée en argument.Citation:
mais maintenant si fp ne renvoit aucune valeur, comment peuve-t-on la passer comme argument à greeting?
Par exemple
Code:
1
2
3
4
5
6 void greeting(void (*fp)(void *), void *q) { .... (*fp)(q); // par exemple .... }
void * est un type "pointeur générique". Ici, il est entre les parenthèses encadrant la déclaration des paramètres d'une fonction. Il signifie simplement, que la fonction passée en (premier) argument de greeting comporte un paramètre du type void *Citation:
void *q c'est logique, un pointeur générique, mais: (void *) !!! un pointeur qui ne pointe sur rien du tout?