Passer des pointeurs vers des fonctions en C

La programmation C permet de passer un pointeur vers une fonction. Pour ce faire, déclarez simplement le paramètre de fonction en tant que type de pointeur.

Voici un exemple simple où nous passons un pointeur long non signé vers une fonction et modifions la valeur à l'intérieur de la fonction qui se reflète dans la fonction appelante -

#include <stdio.h>
#include <time.h>
 
void getSeconds(unsigned long *par);

int main () {

   unsigned long sec;
   getSeconds( &sec );

   /* print the actual value */
   printf("Number of seconds: %ld\n", sec );

   return 0;
}

void getSeconds(unsigned long *par) {
   /* get the current number of seconds */
   *par = time( NULL );
   return;
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -

Number of seconds :1294450468

La fonction, qui peut accepter un pointeur, peut également accepter un tableau comme indiqué dans l'exemple suivant -

#include <stdio.h>
 
/* function declaration */
double getAverage(int *arr, int size);
 
int main () {

   /* an int array with 5 elements */
   int balance[5] = {1000, 2, 3, 17, 50};
   double avg;
 
   /* pass pointer to the array as an argument */
   avg = getAverage( balance, 5 ) ;
 
   /* output the returned value  */
   printf("Average value is: %f\n", avg );
   return 0;
}

double getAverage(int *arr, int size) {

   int  i, sum = 0;       
   double avg;          
 
   for (i = 0; i < size; ++i) {
      sum += arr[i];
   }
 
   avg = (double)sum / size;
   return avg;
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -

Average value is: 214.40000