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

Passage par référence

  

Pascal offre deux modes 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, tandis que 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 remplacer le paramètre x à faire passer par référence par *x partout dans la définition de la fonction, et l'argument correspondant a par &a  à chaque appel de la fonction[*].

 

Voici une procédure qui incrémente son argument entier[*] :

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

int main() {
  int n = 4;

  inc(&n);
  printf("%d\n", n);
}

Un autre 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);

Enfin, si la combinaison des deux règles précédentes produit une expression de la forme *&x, celle-ci peut être simplifiée en x, et &*p en p.


next up previous contents index
Next: Valeurs de retour multiples Up: No Title Previous: Portée
Jean-Philippe Chancelier
9/29/1998