Maison >développement back-end >C++ >Analyse complète des méthodes de passage de paramètres des fonctions C++

Analyse complète des méthodes de passage de paramètres des fonctions C++

WBOY
WBOYoriginal
2023-08-21 21:51:272334parcourir

C++ est un excellent langage de programmation doté de fonctions puissantes et d'une syntaxe flexible. En programmation C++, nous devons souvent transmettre des paramètres aux fonctions. Lors de la transmission de paramètres, la méthode de transmission des paramètres devient un problème très important. Cet article analysera de manière approfondie les différences dans les méthodes de passage de paramètres des fonctions C++, notamment le passage par valeur, le passage par référence et le passage par pointeur.

1. Passage de paramètre par valeur

En C++, lorsque nous passons des paramètres à une fonction, le passage de paramètre par valeur est la méthode la plus courante. Le passage de paramètre par valeur signifie que lors de l'appel d'une fonction, la valeur du paramètre réel est copiée dans la variable du paramètre formel correspondant dans la définition de la fonction. Les opérations sur les paramètres formels d'une fonction n'affectent pas les paramètres réels.

Ci-dessous, nous utilisons un morceau de code pour démontrer les caractéristiques de la méthode de passage des paramètres de valeur :

#include<iostream>
using namespace std;

void changeValue(int x){
    x = 10;
}

int main() {
    int num = 5;
    cout << "Before calling the function: " << num << endl;
    changeValue(num);
    cout << "After calling the function: " << num << endl;
    system("pause");
    return 0;
}

Après avoir exécuté le programme, le résultat est le suivant :

Before calling the function: 5
After calling the function: 5

Comme le montre la sortie, la valeur du x La variable est définie dans la fonction changeValue() 10, mais après l'exécution de la fonction, la valeur de la variable num est toujours 5, ce qui montre que dans le cadre de la méthode de passage de paramètres basée sur la valeur, les modifications apportées aux paramètres formels n'affecteront pas le paramètres réels.

2. Méthode de passage de paramètres par référence

La référence est un type de données important en C++. Une variable de référence peut être considérée comme un alias d'une autre variable existante. Elles partagent la même adresse. Les changements peuvent également avoir un impact sur une autre variable. Le passage de paramètre par référence fait référence au passage de la référence du paramètre réel au paramètre formel correspondant pour appeler la fonction. Lorsque la fonction est exécutée, le paramètre passé est en fait une référence à l'adresse mémoire où se trouve le paramètre réel. A ce moment, le paramètre réel et le paramètre formel pointent vers la valeur de la même adresse.

Ci-dessous, nous utilisons un morceau de code pour montrer les caractéristiques de la méthode de passage de paramètres :

#include<iostream>
using namespace std;

void changeValue(int &x){
    x = 10;
}

int main() {
    int num = 5;
    cout << "Before calling the function: " << num << endl;
    changeValue(num);
    cout << "After calling the function: " << num << endl;
    system("pause");
    return 0;
}

Après avoir exécuté le programme, le résultat est le suivant :

Before calling the function: 5
After calling the function: 10

À partir du résultat de sortie, nous pouvons le voir grâce à la méthode de passage de paramètres , la fonction transmettra la valeur du paramètre réel. Modifiez-le à 10 et modifiez également la valeur de num. Cela montre que lors du passage de paramètres par référence, les modifications apportées aux paramètres formels affecteront les paramètres réels.

3. Méthode de passage des paramètres du pointeur

Le pointeur est également un type de données très important en C++. Il peut stocker une adresse mémoire et accéder aux données dans l'adresse mémoire via un pointeur. La méthode de transmission de paramètre de pointeur signifie que dans un appel de fonction, l'adresse de la variable de paramètre réelle est transmise à la variable de pointeur de paramètre formel dans la fonction et que la fonction accède à la variable de paramètre réelle via le pointeur.

Ci-dessous, nous utilisons un morceau de code pour montrer les caractéristiques de la méthode de passage du paramètre de pointeur :

#include<iostream>
using namespace std;

void changeValue(int *x){
    *x = 10;
}

int main() {
    int num = 5;
    cout << "Before calling the function: " << num << endl;
    changeValue(&num);
    cout << "After calling the function: " << num << endl;
    system("pause");
    return 0;
}

Après avoir exécuté le programme, le résultat est le suivant :

Before calling the function: 5
After calling the function: 10

À partir du résultat de sortie, nous pouvons le voir à travers le paramètre de pointeur En passant la méthode, la fonction transmettra la valeur du paramètre réel. Changez-la à 10 et changez également la valeur de num. Cela montre qu'en mode de passage des paramètres du pointeur, les modifications apportées aux paramètres formels affecteront les paramètres réels.

4. Passer des valeurs constantes, des références constantes et des pointeurs constants

Le passage de valeurs constantes, de références constantes et de pointeurs constants est également plusieurs façons de transmettre les paramètres de fonction C++. Leurs caractéristiques sont basées sur les trois premières méthodes, ajoutant la nécessité d'une protection des données. fonction. Les valeurs constantes transmises, les références constantes et les pointeurs constants ne peuvent pas être modifiés. Ils empêchent les fonctions de modifier les valeurs ou les adresses des paramètres réels.

Ci-dessous, nous utilisons un morceau de code pour démontrer les caractéristiques du passage de valeurs constantes, de références constantes et de pointeurs constants :

#include<iostream>
using namespace std;

//传常量值
void getValue(const int x){
    //x = 10;   //报错,无法改变常量值
    cout << "The value of x is: " << x << endl;
}

//传常量引用
void getNum(const int &x){
    //x = 10;   //报错,无法改变常量引用
    cout << "The value of x is: " << x << endl;
}

//传常量指针
void setNum(const int *x){
    //*x = 10;   //报错,无法改变常量指针
    cout << "The value of x is: " << *x << endl;
}

int main() {
    int num = 5;

    //传常量值
    getValue(num);

    //传常量引用
    getNum(num);

    //传常量指针
    const int *ptr = &num;
    setNum(ptr);

    system("pause");
    return 0;
}

Après l'exécution du programme, le résultat est le suivant :

The value of x is: 5
The value of x is: 5
The value of x is: 5

Comme le montrent les résultats de sortie, qu'il transmette des valeurs constantes, des références constantes ou des pointeurs constants ne peut pas modifier la valeur du paramètre réel.

Pour résumer, les méthodes de transmission de paramètres des fonctions C++ incluent le passage par valeur, le passage par référence et le passage par pointeur. Différentes méthodes ont des caractéristiques et des scénarios d'application différents. Dans le processus de programmation réel, vous devez choisir la méthode appropriée en fonction. la situation réelle. Dans le même temps, la transmission de valeurs constantes, de références constantes et de pointeurs constants est également couramment utilisée dans la programmation de fonctions C++. Ils peuvent protéger les données contre la modification et améliorer la fiabilité et la stabilité du programme.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn