Menu
Coddy logo textTech

Passage par référence

Fait partie de la section Logique et Flux du Journey C++ de Coddy — leçon 41 sur 56.

Lorsque vous passez des arguments à des fonctions, le C++ crée normalement des copies des valeurs. Cela signifie que les modifications à l'intérieur de la fonction n'affectent pas les variables d'origine. Le passage par référence modifie ce comportement en permettant aux fonctions de travailler directement avec les variables d'origine.

Pour passer par référence, ajoutez le symbole & après le type de paramètre dans votre déclaration de fonction :

void doubleValue(int& number) {
    number = number * 2;  // Modifie la variable d'origine
}

Lorsque vous appelez cette fonction, toute modification apportée au paramètre à l'intérieur de la fonction modifiera directement la variable d'origine qui a été transmise. Ceci est particulièrement utile lorsque vous souhaitez qu'une fonction modifie ses arguments ou lorsque vous travaillez avec des objets volumineux pour lesquels une copie serait inefficace.

Le passage par référence élimine le surcoût lié à la copie des données, rendant vos programmes plus rapides et plus économes en mémoire, particulièrement avec des structures de données complexes comme les vecteurs ou les maps.

challenge icon

Défi

Facile

Créez une fonction qui démontre le passage par référence en modifiant directement les variables via les paramètres de la fonction. Ce défi testera votre compréhension de la manière dont le symbole & permet aux fonctions de travailler avec les variables d'origine au lieu de copies.

Les entrées suivantes seront fournies :

  • Un entier value1 représentant le premier nombre
  • Un entier value2 représentant le deuxième nombre
  • Un entier value3 représentant le troisième nombre

Votre programme doit :

  1. Créer une fonction nommée tripleValues qui prend trois paramètres entiers par référence
  2. À l'intérieur de la fonction, multiplier chaque paramètre par 3
  3. Dans la fonction principale, lire les trois valeurs d'entrée et les stocker dans des variables
  4. Afficher les valeurs d'origine avant d'appeler la fonction
  5. Appeler la fonction tripleValues avec les trois variables
  6. Afficher les valeurs modifiées après l'appel de la fonction pour montrer qu'elles ont été changées

Utilisez le format de sortie exact suivant :

Avant l'appel de la fonction :

Original values: [value1] [value2] [value3]

Après l'appel de la fonction :

Tripled values: [new_value1] [new_value2] [new_value3]

La signature de la fonction doit utiliser le symbole & après chaque type de paramètre pour indiquer le passage par référence : void tripleValues(int& a, int& b, int& c). Cela permet à la fonction de modifier directement les variables d'origine qui lui sont transmises, démontrant ainsi la différence clé entre le passage par valeur et le passage par référence. Les variables dans la fonction principale seront modifiées de façon permanente après l'appel de la fonction, prouvant que la fonction a travaillé avec les emplacements mémoire d'origine plutôt qu'avec des copies.

Aide-mémoire

Pour passer par référence en C++, ajoutez le symbole & après le type de paramètre dans votre déclaration de fonction :

void doubleValue(int& number) {
    number = number * 2;  // Modifie la variable d'origine
}

Le passage par référence permet aux fonctions de travailler directement avec les variables d'origine au lieu de copies. Les modifications apportées aux paramètres à l'intérieur de la fonction modifieront les variables d'origine qui ont été transmises.

Cela élimine la surcharge liée à la copie des données, rendant les programmes plus rapides et plus économes en mémoire, en particulier avec des structures de données complexes comme les vecteurs ou les maps.

Essayez vous-même

#include <iostream>
using namespace std;

// TODO: Créer la fonction tripleValues ici

int main() {
    // Lire les valeurs d'entrée
    int value1, value2, value3;
    cin >> value1 >> value2 >> value3;
    
    // Afficher les valeurs originales
    cout << "Original values: " << value1 << " " << value2 << " " << value3 << endl;
    
    // TODO: Appeler la fonction tripleValues ici
    
    // Afficher les valeurs modifiées
    cout << "Tripled values: " << value1 << " " << value2 << " " << value3 << endl;
    
    return 0;
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique et Flux