Tout ce que vous devez savoir sur les fonctions en C?



Cet article vous présentera un concept simple mais très fondamental et important qui est les fonctions en C et le suivra avec une démonstration.

Cet article vous présentera un élément simple mais très fondamental et important concept qui est Fonctions en C et le suivre avec une démonstration. Les pointeurs suivants seront traités dans cet article,

Les fonctions sont des éléments constitutifs de tout langage de programmation. En termes simples, fonction dans un ensemble d'instructions, qui prend des entrées, effectue une tâche spécifique et retourne ensuite la sortie.
L'idéologie derrière la création de fonction est de lier ensemble un ensemble d'instructions liées qui effectue une tâche spécifique. Ainsi, vous n’avez pas à écrire plusieurs fois le même code pour différents ensembles d’entrées. Il vous suffit d'appeler la fonction pour différentes entrées, elle effectuera la tâche spécifiée pour l'entrée donnée et retournera la sortie. Vous pouvez appeler la fonction autant de fois que vous le souhaitez. Dans ce blog, nous apprendrons toutes les nuances sur les fonctions du langage de programmation C.





Commençons par la question la plus fondamentale.

Que sont les fonctions en C?

Les fonctions sont les mêmes en C que dans tout autre langage de programmation. C'est un ensemble de codes liés pour effectuer une tâche spécifique. L'ensemble de code à exécuter est spécifié entre accolades, c'est-à-dire «{}».



Avant d'apprendre à écrire une fonction en C, voyons d'abord quels sont les avantages.

Avantages des fonctions en C

Les avantages des fonctions sont communs à tous les langages de programmation.
L'idée principale derrière la fonction est de réduire la redondance dans le code. Supposons que vous ayez une fonctionnalité qui doit être exécutée plusieurs fois dans un programme, donc au lieu de l'écrire plusieurs fois, vous pouvez créer une fonction pour cette tâche et l'appeler autant de fois que vous le souhaitez. Un autre avantage caché est que si la logique de votre fonctionnalité change par la suite, vous n'avez pas besoin de la modifier à plusieurs endroits. Il vous suffit de changer le code à un endroit (c'est-à-dire dans la fonction) et cela se refléterait dans tout le programme.

définir le chemin de classe pour java

La modularité est à nouveau un avantage supplémentaire. L'écriture d'un gros morceau de code comprenant chacun et tout, réduit la lisibilité du code et le rend difficile à gérer. Vous pouvez diviser le code en sections pour des fonctionnalités individuelles à l'aide de fonctions, ce qui est plus simple à comprendre et plus facile à gérer.



Function fournit également une abstraction, où nous pouvons appeler une fonction et obtenir la sortie sans connaître l'implémentation interne.

Passer aux types de fonction C

Types de fonction en C

Il existe deux types de fonctions:
Fonctions de la bibliothèque
Fonctions définies par l'utilisateur

Les fonctions de bibliothèque sont les fonctions qui sont déjà définies dans la bibliothèque C telles que strcat (), printf (), scanf () etc. Il vous suffit d'inclure les fichiers d'en-tête appropriés pour utiliser ces fonctions.
Les fonctions définies par l'utilisateur sont les fonctions définies par l'utilisateur. Ces fonctions sont conçues pour la réutilisation du code et pour gagner du temps et de l'espace.

Maintenant que nous connaissons les avantages de la création d'une fonction, voyons comment déclarer une fonction en C.

Déclaration et définition de fonction

Déclaration de fonction:

Syntaxe de la déclaration de fonction:

return_type nom_fonction (data_type arg1, data_type arg2) int add (int x, int y) // déclaration de fonction

Dans la déclaration de fonction, nous spécifions le nom de la fonction, le nombre de paramètres d'entrée, leurs types de données et le type de retour de la fonction. La déclaration de fonction indique au compilateur la liste des arguments attendus par la fonction avec leurs types de données et le type de retour de la fonction.

Dans la déclaration de fonction, la spécification des noms du paramètre est facultative, mais la spécification de leurs types de données est obligatoire.

int add (int, int) // déclaration de fonction

La fonction spécifiée ci-dessus prendra deux paramètres entiers.

Définition de fonction

 Image- Fonctions dans C- Edureka
int add (int, int) // déclaration de fonction return_type nom_fonction (paramètres) {corps de la fonction}

Comme le montre l'image ci-dessus, une définition de fonction se compose de deux parties, à savoir l'en-tête de la fonction et le corps de la fonction

En-tête de fonction: L'en-tête de fonction est identique à la déclaration de fonction sans le point-virgule. L'en-tête de fonction contient le nom de la fonction, le paramètre et le type de retour.

  • Type de retour: Le type de retour est le type de données de la valeur qui sera renvoyée par la fonction. La fonction peut ou non renvoyer une valeur. Si tel est le cas, le type de données de la valeur de resynchronisation doit être spécifié, sinon le type de retour doit être void.

  • Nom de la fonction: C'est le nom de la fonction à l'aide duquel nous pouvons appeler la fonction quand et où c'est nécessaire.

  • Paramètres: Les paramètres sont les valeurs d'entrée qui seront transmises à la fonction. Il raconte les types de données des arguments, leur ordre et le nombre d'arguments qui seront passés à la fonction. Les paramètres sont facultatifs. Vous pouvez également avoir des fonctions sans paramètres.

Corps de fonction: Le corps de la fonction est l'ensemble d'instructions qui effectue une tâche spécifique. Il définit ce que fait la fonction.

Exemple:

int add (int x, int y) {int somme = x + y return (somme)}

Il est recommandé de déclarer une fonction avant de la définir et de l'utiliser. En C, nous pouvons déclarer et définir la fonction au même endroit.

Exemple:

#include int add (int, int) // déclaration de fonction // définition de fonction int add (int x, int y) // en-tête de fonction {// corps de fonction int somme = x + y return (somme)} // Fonction principale int main () {int sum = add (23, 31) printf ('% d', sum) return 0}

Comme nous pouvons le voir dans l'exemple ci-dessus, nous appelons la fonction en utilisant l'instruction int sum = add (23, 31). La valeur renvoyée par la fonction est stockée dans la variable sum.

Avant d'aller de l'avant, il y a un autre concept important à comprendre sur le paramètre. Il existe deux types de paramètres:

Paramètre réel : Les paramètres qui sont passés aux fonctions lors de leur appel sont appelés paramètres réels. Par exemple, 23 et 31 dans l'exemple ci-dessus sont les paramètres réels.

Paramètre formel : Les paramètres reçus par les fonctions sont appelés paramètres formels. Par exemple, x & y dans l'exemple ci-dessus sont les paramètres formels.

Avançons rapidement et comprenons les différentes façons d'appeler une fonction en C.

java qu'est-ce qu'une instance

Appeler une fonction

Il y a deux façons d'appeler une fonction:

  • Appel par valeur
  • Appel par référence

Appel par valeur

Dans la méthode d'appel par valeur, la valeur du paramètre réel est transmise en tant qu'argument à la fonction. La valeur du paramètre réel ne peut pas être modifiée par les paramètres formels.

Dans la méthode call be value, une adresse mémoire différente est allouée aux paramètres formels et réels. Seule la valeur du paramètre réel est copiée dans le paramètre formel.

Exemple:

#include void Call_By_Value (int num1) {num1 = 42 printf ('nInside Function, Number is% d', num1)} int main () {int num num = 24 printf ('nBefore Function, Number is% d', num ) Call_By_Value (num) printf ('nAfter Function, Number is% dn', num) return 0}

Production

Dans l'exemple ci-dessus, avant l'appel par la fonction de valeur, la valeur de num est 24. Ensuite, une fois que nous appelons la fonction et passons la valeur, et la changeons à l'intérieur de la fonction, elle devient 42. de num dans la fonction principale, il devient 24.

Appel par référence

Lors d'un appel par référence, l'adresse mémoire du paramètre réel est transmise à la fonction en tant qu'argument. Ici, la valeur du paramètre réel peut être modifiée par le paramètre formel.

La même adresse mémoire est utilisée pour le paramètre réel et formel. Ainsi, si la valeur du paramètre formel est modifiée, elle est également reflétée par le paramètre réel.

En C, nous utilisons des pointeurs pour implémenter l'appel par référence. Comme vous pouvez le voir dans l'exemple ci-dessous, la fonction Call_By_Reference attend un pointeur vers un entier.

Maintenant, cette variable num1 stockera l'adresse mémoire du paramètre actuel. Ainsi, pour imprimer la valeur qui est stockée dans l'adresse mémoire pointée par num1, nous devons utiliser l'opérateur de déréférence, c'est-à-dire *. Ainsi, la valeur de * num1 est 42.

L'opérateur d'adresse & est utilisé pour obtenir l'adresse d'une variable de n'importe quel type de données. Ainsi, dans l’instruction d’appel de fonction ‘Call_By_Reference (& num)’, l’adresse de num est transmise afin que num puisse être modifiée en utilisant son adresse.

Exemple

#include // définition de la fonction void Call_By_Reference (int * num1) {* num1 = 42 printf ('nInside Function, Number is% d', * num1)} // Fonction principale int main () {int num = 24 printf ( 'Fonction nBefore, le nombre est% d', num) Call_By_Reference (& num) printf ('nAfter Function, Number is% dn', num) return 0}

Production

Dans cet exemple, la valeur de num est initialement 24, dans la fonction principale. Une fois qu'elle est passée à la fonction Call_By_Reference et que la valeur est modifiée par le paramètre formel, elle a également été modifiée pour le paramètre réel. C'est pourquoi lorsque nous imprimons la valeur de num après la fonction, il imprime 42.

Passer aux types de fonctions définies par l'utilisateur en C

Types de paramètres définis par l'utilisateur Fonction en C

Il existe différents types de fonctions définies par l'utilisateur en fonction du type de retour et des arguments passés.

Passer à autre chose avec aucun argument passé et aucune valeur de retour

Aucun argument passé et aucune valeur de retour

Syntaxe:

déclaration de fonction:

void function () appel de fonction: function () définition de fonction: void function () {instructions}

Exemple

comment créer une classe singleton en java
#include void add () void add () {int x = 20 int y = 30 int sum = x + y printf ('sum% d', sum)} int main () {add () return 0}

Continuer avec Aucun argument passé mais une valeur de retour

2 Aucun argument passé mais une valeur de retour

Syntaxe:

déclaration de fonction:

int function () appel de fonction: function () définition de la fonction: int function () {instructions return a}

Exemple:

#include int add () int add () {int x = 20 int y = 30 int sum = x + y return (sum)} int main () {int sum sum = add () printf ('sum% d', somme) retourne 0}

Continuer avec des arguments passés mais sans valeur de retour

3 Argument passé mais pas de valeur de retour

Syntaxe:

déclaration de fonction:

void function (int) appel de fonction: function (a) function definition: void function (int a) {instructions}

Exemple:

#include void add (int, int) void add (int x, int y) {int sum = x + y return (sum)} int main () {add (23, 31) return 0}

Passer à l'argument passé et une valeur de retour

4 Argument passé et valeur de retour

Syntaxe:

déclaration de fonction:

int function (int) appel de fonction: function (a) function definition: int function (int a) {instructions return a}

Exemple

#include int add (int, int) int add (int x, int y) {int sum = x + y return (sum)} int main () {int sum = add (23, 31) printf ('% d' , sum) retourne 0}

Voyons maintenant rapidement les fonctions de la bibliothèque C qui sont importantes pour écrire un programme.

Fonctions de la bibliothèque C

Les fonctions de bibliothèque sont des fonctions en C qui sont prédéfinies et présentes par défaut. Il vous suffit d'inclure le fichier d'en-tête spécifique dans le programme et vous pouvez utiliser les fonctions définies dans ce fichier d'en-tête. Chaque fichier d'en-tête fournit un type de fonctionnalité spécifique. L'extension du fichier d'en-tête est .h.

Par exemple, pour utiliser les fonctions printf / scanf, nous devons inclure stdio.h dans notre programme, qui fournit des fonctionnalités concernant l'entrée / sortie standard.

Voici la liste des fichiers d'en-tête.

unstdio.hFichier d'en-tête d'entrée / sortie standard
2minting.hFichier d'en-tête d'entrée / sortie de la console
3string.hFonctions de bibliothèque liées aux chaînes telles que gets (), put (), etc.
4stdlib.hFonctions générales de la bibliothèque telles que malloc (), calloc (), exit (), etc.
5math.hFonctions liées aux opérations mathématiques telles que sqrt (), pow (), etc.
6time.hFonctions liées au temps
septctype.hFonctions de gestion des caractères
8stdarg.hFonctions d'argument variable
9signal.hFonctions de gestion du signal
dixsetjmp.hFonctions de saut
Onzelocale.hFonctions locales
12errno.hFonctions de gestion des erreurs
13assert.hFonctions de diagnostic

Maintenant, après avoir parcouru les fonctions C ci-dessus, vous auriez compris chaque nuance de fonction et comment l'implémenter en langage C. J'espère que ce blog est informatif et a une valeur ajoutée pour vous.

Nous sommes donc arrivés à la fin de cet article sur les «Fonctions en C». Si vous souhaitez en savoir plus, consultez le , une entreprise d'apprentissage en ligne de confiance. Le cours de formation et de certification Java J2EE et SOA d'Edureka est conçu pour vous former aux concepts Java de base et avancés ainsi qu'à divers frameworks Java tels que Hibernate et Spring.

Vous avez une question pour nous? Veuillez le mentionner dans la section commentaires de ce blog et nous vous répondrons dans les plus brefs délais.