Sommaire

Passer des paramètres à une fonction

Problème

Vous voulez passer des paramètres à une fonction et vous avez besoin que la fonction en modifie certains.

Solution

Passez les paramètres par référence en indiquant non pas les variables mais leur adresse.

Discussion

En passant l’adresse d’une variable à une fonction, vous ne transmettez pas sa valeur mais donnez à la fonction un accès complet à son contenu. Elle est alors en mesure de modifier une telle variable. L’exemple suivant montre comment renvoyer à la fois le résultat d’une division entière et le reste :

int 
division_entiere (const int a, const int b, int *r) 
{ 
  int q = a / b; 
  *r = a % b; 
  return (q); 
} 
 
/* ... */ 
int quotient; 
int reste; 
quotient = division_entiere (10, 4, &reste); 
printf ("4 * %d + %d = 10\n", quotient, reste);

Dans cet exemple, le quotient de la division est renvoyé comme d’habitude. Comme il n’est possible de retourner qu’une seule valeur, nous profitons du passage par référence du paramètre reste pour le modifier dans la fonction. Cela nous oblige à travailler avec des pointeurs à l’intérieur de la fonction.

L’utilisation des pointeurs doit vous inciter à prêter une attention toute particulière à votre code car les erreurs liées à une mauvaise utilisation des pointeurs ...