Pointeur de fonction (C)


#1

Bonjour a toutes et a tous ,
Avec ce code , je souhaite passer l’adresse de la fonction" tri" a la fonction “affiche”. Mais je n’y arrive pas , mes yeux sont hs et j’ai besoin de votre aide
Voici le code :

#include <stdio.h>
#define TAILLE 5
int tri(int *tab,int tailletab);
void affiche(int(*pf),int *tab);

int main(void){
int i;
int tab[5];
int(*pf)(int);
pf=&tri;

printf("Entrez 5 chiffre:\n");
for(i=0;i<TAILLE;i++)
scanf("%d",&tab[i]);
printf("chiffres entré:\n");
for(i=0;i<TAILLE;i++)
printf("%d\n",tab[i]);
affiche(pf,tab);
return 0;
}
/*------------------------------*/
int tri(int *tab,int tailletab){
 int i,j,temp;
 for(i=0;i<TAILLE;i++)
 {
  for(j=i+1;j<TAILLE;j++)
  {
   if(tab[j]<tab[i])
   {
    temp=tab[i];
    tab[i]=tab[j];
    tab[j]=temp;
   }
  }
 }
 return *tab;
}
/*----------------------------*/
void affiche(int(*pf),int *tab){
 int i;
 int tab1[TAILLE];

 printf("Tableau apres classement:\n");
 for(i=0;i<TAILLE;i++)
 {
  printf("%d\n",tab1[i]);
 }
}

#2

pf = tri
et non
p=&tri

note que tel que, il ne fonctionne pas, il y a d’autres soucis.
Voilà le code corrigé mais tel que il reste mauvais même si il marche

#include <stdio.h>
#define TAILLE 5
void tri(int *tab);
void affiche(void (*pf)(),int *tab);
int main(void){
int i;
int tab[5];
void (*pf)();
pf=tri;
printf("Entrez 5 chiffre:\n");
for(i=0;i<TAILLE;i++)
scanf("%d",&tab[i]);
printf("chiffres entré:\n");
for(i=0;i<TAILLE;i++)
printf("%d\n",tab[i]);
affiche(pf,tab);
return 0;
}
/*------------------------------*/
void tri(int *tab){
 int i,j,temp;
 for(i=0;i<TAILLE;i++)
 {
  for(j=i+1;j<TAILLE;j++)
  {
   if(tab[j]<tab[i])
   {
    temp=tab[i];
    tab[i]=tab[j];
    tab[j]=temp;
   }
  }
 }
}
/*----------------------------*/
void affiche(void (*pf)(),int *tab){
 int i;
 printf("Tableau apres classement:\n");
 (*pf)(tab);
 for(i=0;i<TAILLE;i++)
 {
  printf("%d\n",tab[i]);
 }
}