12.3. Transmission des paramètres entre sous- programmes On peut logiquement distinguer trois genres de paramètres formels : - les paramètres d’entrée, qui représentent des valeurs nécessaires aux calculs effectués par la procédure ; - les paramètres de sortie, qui désignent les variables où on range les résultats des calculs; - les paramètres mixtes, qui désignent les variables dans lesquelles premièrement se trouvent les données nécessaires aux calculs.Leur continu est modifié par le calcul et à la fin ils constitueront les résultats. En effet, C++ distingue seulement deux modes de transmission de paramètres: - les paramètres passés par valeur qui conviennent aux paramètres d’entrée. La valeur de ces paramètres est recopiée temporairement dans une variable temporaire qui n’est accessible que durant l’exécution du sous-programme ; - les paramètres passés par référence qui conviennent à la fois aux paramètres de sortie ou aux paramètres mixtes. Pour ces paramètres, c’est leur adresse en mémoire qui est rendue accessible au sous-programme, ce qui lui permet d’y lire et écrire des informations. • Les paramètres passés par valeur. Exemple En ce cas le changement du paramètre formel ne se reflète pas sur le paramètre réel correspondant. Exemple. La fonction funA évalue le produit de deux entiers. Le paramètre formel x qui prend la valeur de paramètre réel a = 5, change sa valeur dans la fonction : x = x+y ; Cela n’affecte pas la valeur de a dans la fonction main(): En ce cas le changement du paramètre formel dans le sous-programme modifie le paramètre réel correspondant. C’est le moyen de retourner les résultats d’exécution de la procédure. Les paramètres mixtes sont aussi passés par référence. Pour faire passer des paramètres par référence le paramètre formel doit être un pointeur, tandis que le paramètre réel correspondant doit être une adresse de variable. Exemple: La procédure swap change les valeurs de deux entiers. Suivez l’exécution par l’applette : Le paramètre réel – l’adresse de a /&a/ est passée au paramètre formel – le pointeur x. Le pointeur y prend la valeur – l’adresse de b. La variable auxiliaire pom prend la valeur pointée de pointeur x, c’est -à-dire la valeur de a, a prend la valeur de b, b prend la valeur de pom. Les paramètres peuvent être passés par référence encore quand le signe & précède le paramètre formel. En ce cas le paramètre réel correspondant doit être une variable. Exemple: |