La différence entre les arguments de fonction et les paramètres en C++

Jinku Hu 12 octobre 2023
La différence entre les arguments de fonction et les paramètres en C++

Cet article explique les différences entre les arguments de fonction et les paramètres en C++.

L’anatomie des fonctions en C++

Les fonctions sont le bloc de construction commun de tout programme relativement sophistiqué. Ils permettent de définir les routines récurrentes dans le programme sous forme de blocs séparés et de les appeler lorsque le code correspondant doit être exécuté. Diviser un programme en plusieurs fonctions rend le programme plus modulaire et plus facile à entretenir et à comprendre. Par conséquent, ces programmes sont généralement plus faciles à tester et à déboguer.

Les fonctions ont généralement des noms qui les identifient de manière unique ; cependant, certains concepts comme la surcharge de fonctions permettent au programmeur de définir plusieurs fonctions avec le même nom ; nous allons explorer cette fonctionnalité dans les paragraphes suivants. Les expressions lambda sont également incluses dans le mix, ce qui permet de définir des objets de fonction sans nom. La somme des différentes instructions du bloc fonction est appelée corps de fonction. Les fonctions ont également un type de retour qui représente le type de la valeur renvoyée à l’appelant.

Une autre partie critique de la fonction est une liste de paramètres qui désignent les variables déclarées comme faisant partie de la signature de la fonction. L’appelant passe généralement des valeurs concrètes pour initialiser ces variables dans la portée de la fonction. Ces dernières valeurs sont appelées arguments et sont dites initialiseurs pour les paramètres de la fonction. Pourtant, les termes - paramètres et arguments peuvent être utilisés de manière interchangeable dans certains contextes.

Dans l’exemple de programme ci-dessous, nous vous montrons une fonction nommée - printVector, qui n’a qu’un seul paramètre (nommé vec) défini dans sa signature. Lorsque le processus est invoqué dans la fonction main, l’argument vec1 lui est passé. Une fois l’exécution déplacée dans le corps de la fonction printVector, le paramètre vec est initialisé avec la valeur correspondante.

#include <iostream>
#include <vector>

using std::cout;
using std::endl;
using std::vector;

template <typename T>
void printVector(const vector<T> &vec) {
  for (auto &i : vec) {
    cout << i << "; ";
  }
  cout << endl;
}

int main() {
  vector<int> vec1{11, 82, 39, 72, 51, 32, 91};

  printVector(vec1);

  return EXIT_SUCCESS;
}

Production:

11; 82; 39; 72; 51; 32; 91;

Comme mentionné dans le chapitre précédent, C++ prend en charge le concept de surcharge de fonction, qui permet au programmeur de définir plusieurs fonctions avec le même nom. Cependant, ces fonctions doivent différer par le nombre d’arguments qu’elles acceptent ou les types d’arguments.

Le programme suivant ci-dessous montre l’utilisation de base des fonctions surchargées qui multiplient respectivement deux nombres du type int ou double.

#include <iostream>

using std::cout;
using std::endl;

int multiply(int x, int y) { return x * y; }

double multiply(double x, double y) { return x * y; }

int main() {
  int i1 = 10;
  double d1 = 0.1;

  cout << multiply(i1, i1 + 1) << endl;
  cout << multiply(d1, d1 + 1) << endl;

  return EXIT_SUCCESS;
}

Production:

110
0.11
Auteur: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Article connexe - C++ Function