Fonctions C ++

Une fonction est un groupe d'instructions qui exécutent ensemble une tâche. Chaque programme C ++ a au moins une fonction, qui estmain(), et tous les programmes les plus triviaux peuvent définir des fonctions supplémentaires.

Vous pouvez diviser votre code en fonctions distinctes. La façon dont vous divisez votre code entre différentes fonctions dépend de vous, mais logiquement, la division est généralement telle que chaque fonction effectue une tâche spécifique.

Une fonction declarationindique au compilateur le nom, le type de retour et les paramètres d'une fonction. Une fonctiondefinition fournit le corps réel de la fonction.

La bibliothèque standard C ++ fournit de nombreuses fonctions intégrées que votre programme peut appeler. Par exemple, fonctionstrcat() pour concaténer deux chaînes, fonction memcpy() pour copier un emplacement mémoire vers un autre emplacement et de nombreuses autres fonctions.

Une fonction est connue sous différents noms comme une méthode ou une sous-routine ou une procédure etc.

Définition d'une fonction

La forme générale d'une définition de fonction C ++ est la suivante -

return_type function_name( parameter list ) {
   body of the function
}

Une définition de fonction C ++ se compose d'un en-tête de fonction et d'un corps de fonction. Voici toutes les parties d'une fonction -

  • Return Type- Une fonction peut renvoyer une valeur. lereturn_typeest le type de données de la valeur renvoyée par la fonction. Certaines fonctions exécutent les opérations souhaitées sans renvoyer de valeur. Dans ce cas, le return_type est le mot-clévoid.

  • Function Name- Il s'agit du nom réel de la fonction. Le nom de la fonction et la liste des paramètres constituent ensemble la signature de la fonction.

  • Parameters- Un paramètre est comme un espace réservé. Lorsqu'une fonction est appelée, vous transmettez une valeur au paramètre. Cette valeur est appelée paramètre ou argument réel. La liste des paramètres fait référence au type, à l'ordre et au nombre des paramètres d'une fonction. Les paramètres sont facultatifs; autrement dit, une fonction peut ne contenir aucun paramètre.

  • Function Body - Le corps de la fonction contient une collection d'instructions qui définissent ce que fait la fonction.

Exemple

Voici le code source d'une fonction appelée max(). Cette fonction prend deux paramètres num1 et num2 et renvoie le plus grand des deux -

// function returning the max between two numbers
 
int max(int num1, int num2) {
   // local variable declaration
   int result;
 
   if (num1 > num2)
      result = num1;
   else
      result = num2;
 
   return result; 
}

Déclarations de fonction

Une fonction declarationindique au compilateur un nom de fonction et comment appeler la fonction. Le corps réel de la fonction peut être défini séparément.

Une déclaration de fonction comprend les parties suivantes -

return_type function_name( parameter list );

Pour la fonction max () définie ci-dessus, voici la déclaration de fonction -

int max(int num1, int num2);

Les noms de paramètres ne sont pas importants dans la déclaration de fonction, seul leur type est requis, ce qui suit est également une déclaration valide -

int max(int, int);

La déclaration de fonction est requise lorsque vous définissez une fonction dans un fichier source et que vous appelez cette fonction dans un autre fichier. Dans ce cas, vous devez déclarer la fonction en haut du fichier appelant la fonction.

Appeler une fonction

Lors de la création d'une fonction C ++, vous donnez une définition de ce que la fonction doit faire. Pour utiliser une fonction, vous devrez appeler ou invoquer cette fonction.

Lorsqu'un programme appelle une fonction, le contrôle du programme est transféré à la fonction appelée. Une fonction appelée exécute une tâche définie et quand son instruction return est exécutée ou lorsque son accolade fermante de fin de fonction est atteinte, elle renvoie le contrôle du programme au programme principal.

Pour appeler une fonction, vous devez simplement transmettre les paramètres requis avec le nom de la fonction, et si la fonction renvoie une valeur, vous pouvez stocker la valeur renvoyée. Par exemple -

#include <iostream>
using namespace std;
 
// function declaration
int max(int num1, int num2);
 
int main () {
   // local variable declaration:
   int a = 100;
   int b = 200;
   int ret;
 
   // calling a function to get max value.
   ret = max(a, b);
   cout << "Max value is : " << ret << endl;
 
   return 0;
}
 
// function returning the max between two numbers
int max(int num1, int num2) {
   // local variable declaration
   int result;
 
   if (num1 > num2)
      result = num1;
   else
      result = num2;
 
   return result; 
}

J'ai conservé la fonction max () avec la fonction main () et compilé le code source. Lors de l'exécution de l'exécutable final, il produirait le résultat suivant -

Max value is : 200

Arguments de fonction

Si une fonction doit utiliser des arguments, elle doit déclarer des variables qui acceptent les valeurs des arguments. Ces variables sont appeléesformal parameters de la fonction.

Les paramètres formels se comportent comme les autres variables locales à l'intérieur de la fonction et sont créés à l'entrée dans la fonction et détruits à la sortie.

Lors de l'appel d'une fonction, il existe deux manières de transmettre des arguments à une fonction -

Sr. Non Type d'appel et description
1 Appel par valeur

Cette méthode copie la valeur réelle d'un argument dans le paramètre formel de la fonction. Dans ce cas, les modifications apportées au paramètre à l'intérieur de la fonction n'ont aucun effet sur l'argument.

2 Appel par pointeur

Cette méthode copie l'adresse d'un argument dans le paramètre formel. À l'intérieur de la fonction, l'adresse est utilisée pour accéder à l'argument réel utilisé dans l'appel. Cela signifie que les modifications apportées au paramètre affectent l'argument.

3 Appel par référence

Cette méthode copie la référence d'un argument dans le paramètre formel. À l'intérieur de la fonction, la référence est utilisée pour accéder à l'argument réel utilisé dans l'appel. Cela signifie que les modifications apportées au paramètre affectent l'argument.

Par défaut, C ++ utilise call by valuepour passer des arguments. En général, cela signifie que le code dans une fonction ne peut pas modifier les arguments utilisés pour appeler la fonction et l'exemple mentionné ci-dessus tout en appelant la fonction max () utilise la même méthode.

Valeurs par défaut des paramètres

Lorsque vous définissez une fonction, vous pouvez spécifier une valeur par défaut pour chacun des derniers paramètres. Cette valeur sera utilisée si l'argument correspondant est laissé vide lors de l'appel à la fonction.

Pour ce faire, utilisez l'opérateur d'affectation et attribuez des valeurs aux arguments dans la définition de fonction. Si une valeur pour ce paramètre n'est pas transmise lorsque la fonction est appelée, la valeur donnée par défaut est utilisée, mais si une valeur est spécifiée, cette valeur par défaut est ignorée et la valeur transmise est utilisée à la place. Prenons l'exemple suivant -

#include <iostream>
using namespace std;
 
int sum(int a, int b = 20) {
   int result;
   result = a + b;
  
   return (result);
}
int main () {
   // local variable declaration:
   int a = 100;
   int b = 200;
   int result;
 
   // calling a function to add the values.
   result = sum(a, b);
   cout << "Total value is :" << result << endl;

   // calling a function again as follows.
   result = sum(a);
   cout << "Total value is :" << result << endl;
 
   return 0;
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -

Total value is :300
Total value is :120