Declaration en C
hello, 2 petit question en C: que signifie les declarations suivantes:
void *(*(f[]))(int *);
et
char *d(int (*[])());
merci de m eclairer
void *(*(f[]))(int *);
et
char *d(int (*[])());
merci de m eclairer
6 réponses
-
ton prof c'est pas Bernard Quement par hasard ?
-
Zone sensible ;p. Allez ! Je m'y risque...
>void *(*(f[]))(int *);
-> pointeur sur pointeur de fonctions f retournant un void * et prenant en paramètre en pointeur sur int.
>char *d(int (*[])());
->Fonction qui retourne un char* (pointeur sur char), qui prend en paramètre un pointeur de pointeur de fonction qui n'a rien en paramètre et qui renvoie un int...
Pfiouuuu....
@++
Vous hésitez entre Linux et Windows ?
Vous voulez dépenser du temps ou de l'argent ? -
merci!! j espere que c es un truc comme ca!!
enfin c est des kestions de mon exams de janvier, mais j avais aucune idee de la signification!! :( -
Ben, chui en gros dans le vrai, mais j'ai un ptit doute sur la partie "pointeur de pointeur de fonction" avec :
(*(f[])) je crois que c'est totalement équivalent à (*(*f)) mais je n'en suis pas sur à 100%.
@++
Vous hésitez entre Linux et Windows ?
Vous voulez dépenser du temps ou de l'argent ? -
Pour le premier :
void *(*(f[]))(int *);
c'est un tableau de pointeur sur fonctions prenant un int* en parametre et renvoyant un void*
car attention: un tableau n'est pas un pointeur.
ça resemble c'est tout.
Pour le deuxieme rien a re-dire ;-)-
-
ContributeurNon un tableau n'est pas un pointeur... Ce n'est pas une question de pédagogie.
Le pointeur pointe sur la première adresse, le tableau représente l'ensemble.
Par contre, lorsqu'on envoie un tableau en tant que paramètre dans une fonction, le compilateur lui substitue la première adresse sur le tableau pour alléger les appels fonctions.
Cdlt,
-
-
ben merci a tous :)
et non mon prof c po B Quement; moi je suis a l USTL de lille..