Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Langue C

Appel par référence en C++ : Utilisation des pointeurs - Exemples pratiques

Appel par référence en C++ : Utilisation des pointeurs - Exemples pratiques

Ce guide explique comment passer des arguments par référence en C++ en utilisant des pointeurs, avec des exemples de code clairs qui démontrent l'échange de valeurs et plus encore.

Dans le monde des fonctions C++, la façon par défaut de passer des données est par valeur : la fonction reçoit une copie des données originales. Bien que cela protège la variable originale, cela peut être inefficace pour les gros objets et empêche la fonction de modifier les données de l'appelant.

Le passage par référence résout les deux problèmes. Au lieu de copier les données, la fonction reçoit une référence (ou une adresse) vers la variable originale, permettant une manipulation directe. Cela est réalisé de deux manières équivalentes : en utilisant les références C++ ou les pointeurs bruts. Comprendre les deux approches vous donne de la flexibilité et une compréhension plus profonde de la gestion de la mémoire.

// Fonction qui prend une valeur
void func1(int numVal) {
    // code
}

// Fonction qui prend une référence (syntaxe de référence C++)
void func2(int &numRef) {
    // code
}

int main() {
    int num = 5;
    // Passage par valeur
    func1(num);
    // Passage par référence
    func2(num);
    return 0;
}

Le & dans void func2(int &numRef) indique que le paramètre est une référence. Quand func2 est appelé, l'adresse de num est passée, pas sa valeur, permettant à la fonction de modifier num directement.

Appel par référence en C++ : Utilisation des pointeurs - Exemples pratiques

Exemple 1 : Échange de valeurs avec les références C++

#include <iostream>
using namespace std;

// Fonction d'échange utilisant les références
void swap(int &n1, int &n2) {
    int temp = n1;
    n1 = n2;
    n2 = temp;
}

int main() {
    int a = 1, b = 2;
    cout << "Avant l'échange\n";
    cout << "a = " << a << "\n";
    cout << "b = " << b << "\n";
    swap(a, b);
    cout << "\nAprès l'échange\n";
    cout << "a = " << a << "\n";
    cout << "b = " << b << "\n";
    return 0;
}

Sortie

Avant l'échange
a = 1
b = 2
Après l'échange
a = 2
b = 1

Dans cet exemple, swap reçoit deux références. Comme n1 et n2 sont des alias pour a et b, les modifications à l'intérieur de la fonction affectent les variables originales.


Exemple 2 : Échange de valeurs avec les pointeurs

#include <iostream>
using namespace std;

// Prototype de fonction utilisant les pointeurs
void swap(int*, int*);

int main() {
    int a = 1, b = 2;
    cout << "Avant l'échange\n";
    cout << "a = " << a << "\n";
    cout << "b = " << b << "\n";
    // Passage des adresses de a et b
    swap(&a, &b);
    cout << "\nAprès l'échange\n";
    cout << "a = " << a << "\n";
    cout << "b = " << b << "\n";
    return 0;
}

// Fonction d'échange utilisant les pointeurs
void swap(int* n1, int* n2) {
    int temp = *n1;
    *n1 = *n2;
    *n2 = temp;
}

Sortie

Avant l'échange
a = 1
b = 2
Après l'échange
a = 2
b = 1

Ici, swap accepte des pointeurs bruts. En déréférençant avec *, la fonction accède et modifie les valeurs aux adresses fournies. Le résultat est identique à la version par référence, mais la syntaxe des pointeurs rend le passage d'adresses explicite.

Le choix entre références et pointeurs dépend du contexte : les références offrent une syntaxe plus sûre et plus propre, tandis que les pointeurs fournissent un contrôle explicite sur les adresses mémoire et sont nécessaires pour l'allocation dynamique.

Quand utiliser chaque approche

Langue C

  1. Maîtriser les directives using C# : Imports, alias et directives static
  2. Maîtriser les opérateurs C++ : Guide complet avec exemples pratiques
  3. Commentaires C++ : Bonnes pratiques pour un code lisible et maintenable
  4. Maîtriser les templates de classe en C++ : Guide pratique
  5. Maîtriser les pointeurs en C : Tutoriel pratique guidé par des experts
  6. Maîtriser les pointeurs en C++ : Concepts, exemples et applications pratiques
  7. 13 Types de Logiciels Malveillants en 2021 : Menaces, Exemples et Prévention
  8. 5 Modèles de Centres de Données Expliqués : Conception, Cas d'Usage et Exemples
  9. Exploration des 8 Grandes Tendances Technologiques de 2021 avec Exemples Concrets