Tableaux en paramètres
153
Remarque
Dans cet exemple, l’utilisation de la transmission par référence n’est pas indispensable
puisqu’on pourrait demander à la fonction de founir en résultat la valeur du maximum. En
revanche, l’exercice 8.5 vous montrera une situation où il serait impossible de s’en passer.
Exercice 8.4 Que se passserait-il, dans l’exemple du paragraphe 1.6, page 146, si nous
avions, par mégarde, utilisé l’en-tête suivante pour la fonction échange :
échange (entier a, référence entier b)
3 Tableaux en paramètres
Nous avons vu que, par défaut, les paramètres d’un type de base (entier, réel, caractère, booléen) sont transmis par valeur, mais qu’il est possible d’en prévoir une transmission par référence. Il en va naturellement de même pour les variables indicées (éléments d’un
tableau).
En revanche, en ce qui concerne les tableaux eux-mêmes, c’est-à-dire l’ensemble des éléments qui les constituent), on pourrait théoriquement envisager les deux possibilités :
• transmission par valeur, donc recopie de tous les éléments du tableau dans un emplacement
local à la fonction ; toutes les modifications opérées sur ce tableau seraient alors locales à la
fonction et non répercutées sur le tableau d’origine ;
• transmission par référence : la fonction travaille directement sur le tableau d’origine, dont
elle peut utiliser et modifier les éléments.
Actuellement, souvent pour des questions d’efficacité, la plupart des langages utilisent uniquement le second mode et c’est ce que nous conviendrons ici :
Voyons cela plus en détail, en commençant par le cas où la taille du tableau fourni en paramètre est toujours la même.
3.1 Cas des tableaux de taille déterminée
Supposons que nous souhaitions écrire une fonction nommée raz qui « met à zéro » les trois
éléments d’un tableau de type réel. Par exemple, si nous avons déclaré ce tableau :
tableau réel tab [3]
nous appellerons notre fonction de cette manière :
raz (tab)
La transmission d’un tableau en paramètre d’une fonction se fait toujours par référence.
Précédent

- 176/370

Suivant