Bonsoir à tous,
Je suis sur le tuto C du site, et en lisant le cours sur les pointeurs de fonctions je m’aperçois que le cours passe sous silence la manière dont on coderait un pointeur sur une fonction qui retourne un pointeur sur une fonction. Pourquoi se demander cela ? A mon avis cela ne sert à rien à part à comprendre le langage C et sa philosophie, comment sont construites les syntaxes je dirais. Ca permet de mieux retenir ce qui paraît compliqué quand on ne prend pas la peine de comprendre l’idée qu’il y a derrière. N’hésitez pas à vous prêter à l’exercice avant de me relire, l’exercice est intéressant.
Bref, j’ai fait un court code et j’ai exprimé en commentaires ce que je pense que la syntaxe veut dire. Seulement je ne suis pas sûr de ce que j’écris ! Si des gens plus expérimentés que moi passent par ici je serais ravi d’avoir une confirmation (ou infirmation).
Maux de crâne garantis.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int (*pTab)[2]; //pointeur vers un tab de 2 int
int (**ppTab)[2]; //pointeur vers un pointeur vers un tab de 2 int
int (*(*p)[2])[2]; //pointeur vers un tableau de 2 pointeurs vers des tableaux de 2 int (oulala...)
int (*pF1) (int); //pointeur vers une fonction (paramètre int et retour int)
int (*(*pF2)(int)) (int); //pointeur vers une fonction qui retourne un pointeur de fonction (oulalalala...)
int (*(*pF3)(int)) [2]; //pointeur sur une fonction (paramètre int et retour pointeur sur tableau)
int (*(*(*pF4)(int)) (int)) [2];
/*pointeur sur une fonction (paramètre int et retour pointeur sur une fonction (paramètre int et retour pointeur sur tableau de 2 int)) (oulalalalalalalala)*/
int main()
{
printf("J'ai beau etre matinal, j'ai mal au crane\n");
return 0;
}