|
|
Paramètres
des procédures |
Invariabilité des paramètres réels passés par valeur.
Passage de pointeurs sur des variables.
Passage de paramètres par référence.
|
Passage
de paramètres par valeur
Invariabilité des paramètres réels |
||
|
Affichage
Pour un néophyte, c'est paradoxal, en effet :
Conclusion : Autrement
dit , C'est un prinvipe intéressant pour la clarté du programme : si les procédures modifiaient les valeurs de paramètres passés on aurait du mal à savoir où en sont les valeurs des variables au cours du programme sans connaître par faitement ce qui se passe dans les procédures. Or, une des règles d'or de la programmation moderne est de ne jamais avoir à connaître le codes des procédures une fois qu'elles sont crées et définitivement testées. Dans
certains cas, il est utile, voire même indispensable de modifier
ces valeurs.
|
|
Passage
de paramètres par pointeur
|
||
|
Affichage :
Contrairement au passage des paramètres par valeur, la valeur des variables du programme appelant sont modifiées si l'on passe à une procédure des pointeurs sur ces variables et non pas les variables elles-mêmes. Remarques : Les pointeurs &x
et &y eux-mêmes ne sont pas modifiés par la fonction
appelée. Mais, même
si les pointeurs passés avaient été des pointeurs
variables et que leurs valeurs aient été modifiées
à l'intérieur de la procédure, les valeurs de ces
pointeurs avant et après l'appel de la procédure auraient
été les mêmes. Autrement dit, les pointeurs eux mêmes sont passés par valeur donc pas modifiés par la fonction. Ce sont les contenus des variables pointées par ces pointeurs qui peuvent être définitivement modifiées par les procédures. |
|
Passage
de paramètres par référence
|
||||||
|
Affichage :
Les variables passés en paramètres ont bel et bien été modifiées. |
||||||
|
Intérêt d'écrire des procédures avec passage de paramètres par référence On
peut se poser la question puisque, dans le cas où l'on souhaite
que la ou les variables passées La
méthode de passage par pointeur exige que la procédure soit
écrite spécialement. Avec
le passage par référence, pas de problème !
Et,
bien entendu, il faut savoir que le compilateur, face à un passage
par référence,
En somme, le compilateur en fait un maximum à la place de programmeur. |
||||||
|
Mais
le programmeur doit au moins savoir qu'en écrivant sa procédure
sous l'une ou l'autre des formes, la variable passée sera modifiée
dans un cas et pas dans l'autre !
|
|
Passage
par référence et compilateurs
|
|||||||||
|
Les compilateurs anciens, mais aussi les compilateurs de C écrits pour des usages où les additifs du langage C++ ne servent pas. C'est le cas de la programmation industrielle pour automatismes. Certains
constructeurs, Microsoft par exemple, écrivent des compilateurs
C++ Ils
s'adaptent automatiquement à l'un ou à l'autre de ces langages
Pour leur faire savoir, adoptez pour extension de fichiers source :
|
|
|