Passer au contenu principal
eLearner.app
Module 3 · Leçon 2 sur 28/18 dans le cours~12 min
Leçons du module (2/2)

Passage par valeur et référence

En C++, lorsque vous passez un argument à une fonction, il existe deux manières principales de le faire : par valeur ou par référence.

Comprendre cette distinction est essentiel tant pour la correction du programme que pour l'optimisation des performances.

Passage par Valeur (Copie)

Par défaut, C++ passe les arguments par valeur. Cela signifie qu'une copie de la donnée est créée en mémoire. Toute modification effectuée à l'intérieur de la fonction n'affectera pas la variable d'origine à l'extérieur :

Code
#include <iostream>

void increment(int n) {
    n++; // Modifica solo la copia locale
}

int main() {
    int x = 5;
    increment(x);
    std::cout << x << std::endl; // Stampa 5, x non è cambiata!
    return 0;
}

Passage par Référence (&)

Si vous souhaitez que la fonction puisse modifier la variable d'origine, ou si vous voulez éviter de copier des objets de grande taille (comme de longues chaînes de caractères ou des vecteurs), vous devez utiliser le passage par référence.

Une référence se déclare en ajoutant le symbole & après le type du paramètre :

Code
#include <iostream>

void incrementRef(int& n) {
    n++; // Modifica direttamente la variabile originale
}

int main() {
    int x = 5;
    incrementRef(x);
    std::cout << x << std::endl; // Stampa 6!
    return 0;
}

Le paramètre int& n n'est pas une copie, mais un alias (une référence directe) pour la variable x passée lors de l'appel.

À vous de jouer

Exercice#cpp.m3.l2.e1
Tentatives : 0Chargement…

Définissez une fonction doubleNumber avec un type de retour void qui prend une référence à un entier n (en utilisant int& n) et double sa valeur (n = n * 2). Appelez-la dans le main en lui passant la variable val initialisée à 10, puis affichez val.

Chargement de l'éditeur…
Afficher l'indice

La signature de la fonction utilise le caractère `&`après le type pour indiquer une référence :`void doubleNumber(int& n)`.

Solution disponible après 3 tentatives

Exercice#cpp.m3.l2.e2
Tentatives : 0Chargement…

Définissez une fonction swap qui prend deux références à des entiers a et b (int& a, int& b) et échange leurs valeurs en utilisant une variable temporaire temp. Appelez-la dans le main pour échanger x et y, puis affichez-les.

Chargement de l'éditeur…
Afficher l'indice

Utilisez `int temp = a; a = b; b = temp;` pour échanger les valeurs.

Solution disponible après 3 tentatives