next up previous contents index
Next: Plusieurs valeurs de retour Up: No Title Previous: Portée

Passage par référence (1)

   

Pascal offre deux mode de passage des arguments : par valeur, et par référence. Par contre, C, par simplicité n'en offre qu'un, le passage par valeur. Fortran fait le choix inverse.

Dans un passage par référence, ce n'est pas la valeur de l'argument qui est utilisée dans le corps de la fonction, c'est l'argument lui-même, en tant qu'objet, qui est utilisé et modifié : ces modifications resteront donc visibles après le retour de la fonction.

Pour simuler un appel par référence en C, on utilise un pointeur, type de données qui sera expliqué ultérieurement. Disons qu'en pratique, il suffit de faire précéder le paramètre à faire passer par référence par * partout dans la définition de la fonction, et l'argument correspondant par &  à chaque appel de la fonctiongif.

Voici une procédure qui incrémente son argument entier (l'expression x++ a le même comportement, et a en outre comme valeur celle de x après l'incrémentation) :

void inc(int *x) {
  *x = *x+1;
}

int main() {
  int n = 4;
  inc(&n);
  printf("%d\n", n);
}

Un exemple classique est la fonction qui échange la valeur de deux variables :  

void swap(int *x, int *y) {
  int temp = *x;
  *x = *y;
  *y = *temp;
}

Elle sera appelée ainsi :

  int a=1, b=2;
  swap(&a, &b);


Rene Lalement
Mon Sep 30 18:22:54 MET 1996