Maison  >  Article  >  développement back-end  >  Explication détaillée du mécanisme d'appel de fonction C++

Explication détaillée du mécanisme d'appel de fonction C++

PHPz
PHPzoriginal
2024-04-11 14:12:021145parcourir

Le mécanisme d'appel de fonction en C++ consiste à transmettre des arguments à une fonction et à exécuter son code, en renvoyant le résultat s'il existe. Il existe deux manières de transmettre des paramètres : passer par valeur (les modifications sont effectuées à l'intérieur de la fonction) et passer par référence (les modifications sont reflétées dans l'appelant). En mode passage par valeur, les modifications de valeur au sein d'une fonction n'affectent pas la valeur d'origine (comme printValue), alors que les modifications en mode passage par référence affectent la valeur d'origine (comme printReference).

C++ 函数调用机制详解

Explication détaillée du mécanisme d'appel de fonction C++

Introduction

En C++, l'appel de fonction est un mécanisme qui permet au programme d'effectuer des tâches spécifiques en passant des paramètres. L'appel de fonction implique les étapes suivantes :

  1. Passage des paramètres.
  2. Transférer le contrôle au corps fonctionnel.
  3. Exécutez le code dans le corps de la fonction.
  4. Renvoie la valeur de retour à l'appelant (si la fonction a une valeur de retour).
  5. Rétablissez le contrôle à l'appelant.

Passage par valeur et passage par référence

Il existe deux mécanismes de passage de paramètres en C++ :

  • Passage par valeur : Les paramètres sont passés aux fonctions par valeur. Toute modification apportée aux paramètres au sein d'une fonction n'est pas reflétée dans les valeurs d'origine transmises à l'appelant.
  • Passage par référence : Les paramètres sont transmis aux fonctions par référence. Toute modification apportée aux paramètres au sein d'une fonction est reflétée dans les valeurs d'origine transmises à l'appelant.

Appeler une fonction par valeur

void printValue(int value) {
  value++; // 对 value 的修改不会影响调用者传递的原始值
}

int main() {
  int num = 10;
  printValue(num);
  cout << num << endl; // 输出 10
}

Appeler une fonction par référence

void printReference(int &value) {
  value++; // 对 value 的修改会影响调用者传递的原始值
}

int main() {
  int num = 10;
  printReference(num);
  cout << num << endl; // 输出 11
}

Cas pratique

Supposons que nous ayons une fonction qui trouve le plus grand diviseur commun (PGCD). Le pseudo-code est le suivant. :

int gcd(int a, int b) {
  if (b == 0) {
    return a;
  }

  return gcd(b, a % b);
}

Appel de la fonction gcd par valeur :

int main() {
  int a = 10, b = 12;
  int gcdValue = gcd(a, b);
  cout << "GCD: " << gcdValue << endl; // 输出 2
}

Dans ce cas, les valeurs originales de a et b ne seront pas affectées par les modifications de paramètres dans la fonction gcd.

Appel de la fonction gcd par référence :

int main() {
  int a = 10, b = 12;
  gcd(a, b);
  cout << "GCD: " << a << endl; // 输出 2
}

En utilisant le passage par référence, la fonction peut modifier la valeur de a. Par conséquent, l'appelant reçoit la valeur GCD et la stocke dans a.

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