Programmation en C – Passer un tableau en paramètre d’une fonction

Si vous voulez passer un tableau unidimensionnel comme argument dans une fonction, vous devrez déclarer un paramètre formel de l’une des trois manières suivantes et les trois méthodes de déclaration produisent des résultats similaires, car chacun indique au compilateur qu’un pointeur de type entier va être reçu. De même, vous pouvez passer des tableaux multidimensionnels en tant que paramètres formels.
 
 

Méthode 1 : Paramètre formel de type pointeur
void maFonction(int *parametre) {
   .
   .
   .
}

 

Méthode 2 : Paramètre formel de type tableau avec dimension
void maFonction(int parametre[10]) {
   .
   .
   .
}

 

Méthode 3 : Paramètre formel de type tableau sans dimension
void maFonction(int parametre[]) {
   .
   .
   .
}

Exemple :
Maintenant, considérons la fonction suivante, qui prend un tableau comme un argument et leur taille, et elle retourne la moyenne

double moyenne(int tab[], int taille) {

   int i;
   double moy;
   double sum = 0;

   for (i = 0; i < taille; ++i) {
      sum += tab[i];
   }

   moy = sum / taille;

   return moy;
} 

Maintenant, appelons la fonction ci-dessus comme suit :

#include <stdio.h>
 
/* Déclaration de fonction */
double moyenne(int tab[], int taille);

int main () {

   /* Un tableau de 5 éléments */
   int tableau[5] = {1000, 2, 3, 17, 50};
   double moy;

   /* Passe le pointeur du tableau en argument */
   moy= moyenne( tableau, 5 ) ;
 
   /* La sortie de la valeur retournée  */
   printf( "La valeur moyenne est : %f ", moy);
    
   return 0;
} 

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

La valeur moyenne est: 214.400000

Comme vous pouvez le voir, la longueur du tableau n’a pas d’importance parce que le compilateur n’effectue pas un contrôle de limites pour les paramètres formels.
 
 

Exemple en utilisant un pointeur :

Dans cette méthode, l’adresse des paramètres réels se copie dans les paramètres formels. Dans l’exemple ci-dessous, nous passons l’adresse de l’élément comme un argument à la fonction, au lieu de leurs valeurs. Nous devons utiliser des pointeurs pour cela.

#include <stdio.h>

afficher( int *num)
{
    printf("%d ", *num);
}

int main()
{
     int tab[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
     for (int i=0; i<=10; i++)
     {
         /* Passer l'adresse de chaque élément */
         afficher(&tab[i]);
     }

     return 0;
} 

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

1 2 3 4 5 6 7 8 9 0

 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *