Je suis tombé sur un bout de code qui illustre ce que je ne comprend jamais (ou presque) so WTF
voilà:
void greeting(void (*fp)(void *), void *q);
mais qu'eeeest-ce que ça veut dire![]()
Je suis tombé sur un bout de code qui illustre ce que je ne comprend jamais (ou presque) so WTF
voilà:
void greeting(void (*fp)(void *), void *q);
mais qu'eeeest-ce que ça veut dire![]()
Salut,
Ca en fait, ca veut dire ceci, dans l'odre de gauche à droite pour la lecture:
Code : Sélectionner tout - Visualiser dans une fenêtre à part 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 ?![]()
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
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![]()
Il n'y a pas de *void mais des void *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.mais maintenant si fp ne renvoit aucune valeur, comment peuve-t-on la passer comme argument à greeting?
Par exemple
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 *void *q c'est logique, un pointeur générique, mais: (void *) !!! un pointeur qui ne pointe sur rien du tout?
Partager