Chaque programme C est un ensemble de fonctions. Découvrez tout sur ces morceaux de code réutilisables utiles, de la façon de les définir à ce que signifie void.
Vous avez peut-être abordé la syntaxe de base du C, avec des exemples simples, et vous vous demandez maintenant comment créer des programmes plus grands et réels. Pour commencer, vous souhaiterez organiser votre code en parties efficaces, avec un minimum de répétitions. En C, comme dans la plupart des langages, la réponse à vos problèmes est la fonction.
Créer et utiliser des fonctions en C est simple et apporte de nombreux avantages. Les fonctions vous permettent de diviser des programmes complexes en morceaux plus petits. Ils permettent une réutilisation, à la fois dans votre programme d'origine et dans des bibliothèques associées ou d'autres programmes distincts.
Pour commencer, vous devrez vous renseigner sur les déclarations de fonctions, les prototypes, les paramètres et les instructions de retour.
Que sont les fonctions en C?
En programmation C, une fonction est une section nommée de code qui fait quelque chose lorsque vous le lui demandez. Cela aide à garder votre code organisé et vous permet d'utiliser la même action plusieurs fois sans vous répéter.
L’exemple le plus simple est celui que vous utilisez déjà: la fonction main(). La fonction main est particulièrement spéciale car elle constitue le point d’entrée principal de tout programme C. Vous pouvez également utiliser les fonctions de bibliothèque, qui sont celles que quelqu'un d'autre a déjà écrites, ou vous pouvez écrire vos propres fonctions définies par l'utilisateur.
Fonctions: déclarer, définir et appeler
Ces trois aspects sont fondamentaux pour l’utilisation des fonctions.
Déclaration de fonction
Cela fournit des informations sur le nom d'une fonction, le type de retour et les paramètres, permettant son utilisation avant sa définition complète. On l'appelle également prototype de fonction. Il suit cette syntaxe simple :
return_type function_name(parameters);
Où:
- type_retour est le type de données de la valeur renvoyée par la fonction. Il peut s'agir de n'importe quel type de données C valide ou vide si la fonction ne renvoie pas de valeur.
- nom_fonction est le nom que vous donnez à la fonction. Vous l'utiliserez pour appeler la fonction plus tard.
- paramètres est une liste de paramètres d'entrée que la fonction accepte, le cas échéant. Chaque paramètre se compose d'un type de données suivi d'un nom de paramètre séparé par des virgules.
Par exemple, voici une simple déclaration de fonction :
intadd(int a, int b);
Définition de la fonction
Lorsque vous appelez une fonction, elle exécute le code spécifié dans sa définition. Il comprend le nom de la fonction, le type de retour, la liste des paramètres et les instructions qui définissent son comportement. Voici la syntaxe :
return_type function_name(parameters){
// Function body - code that defines what the function does
// Return a value if applicable
return value;
}
Décomposons certaines parties de la syntaxe :
Corps de fonction: Il s'agit du bloc de code entouré d'accolades {}. Il contient les instructions qui définissent ce que fait la fonction lorsqu'elle est appelée.
Déclaration de retour: Si la fonction a un type de retour autre que vide, le retour L'instruction renvoie une valeur à l'appelant. Cette valeur doit correspondre au type de retour spécifié.
Voici un exemple simple de définition de fonction :
intadd(int a, int b){
int sum = a + b;
return sum;
}
Appel de fonction
Tout comme en cuisine, vous pouvez avoir une recette (définition de fonction) et quelques ingrédients (arguments), mais vous devez quand même suivre les instructions pour obtenir un résultat. Un appel de fonction exécutera la fonction avec les arguments donnés; voici la syntaxe :
return_type result = function_name(arguments);
arguments: Ce sont les valeurs ou expressions que vous transmettez à la fonction en tant qu'entrées. Séparez chaque argument par une virgule. Le nombre, l'ordre et les types de données des arguments doivent correspondre à la liste des paramètres de la fonction.
résultat: Si la fonction a un type de retour autre que vide, vous pouvez capturer la valeur renvoyée à l'aide d'une variable du type de données approprié.
Voici un exemple d'appel de fonction :
#include
// Function prototype
intadd(int a, int b);intmain(){
int x = 5, y = 3;// Call the function and store the result in 'sum'
int sum = add(x, y);
printf("The sum of %d and %d is %d\n", x, y, sum);
return0;
}
// Function definition
intadd(int a, int b){
return a + b;
}
En suivant ces trois étapes: déclarer la fonction, fournir son implémentation et l'appeler avec des arguments appropriés: vous pouvez utiliser efficacement des fonctions pour effectuer diverses tâches dans votre programme.
Paramètres de fonction et valeurs de retour
Les paramètres sont des variables déclarées dans la déclaration ou la définition de la fonction qui servent d'espaces réservés pour les valeurs transmises à la fonction lors de son appel. Ils vous permettent de transmettre des données à la fonction, lui permettant ainsi de travailler avec et de manipuler ces données. Les valeurs de retour sont les valeurs qu'une fonction produit et renvoie à l'appelant.
Il existe deux méthodes pour transmettre des paramètres.
Passer par valeur
Avec cette approche, un appel de fonction copie la valeur de l'argument réel dans le paramètre de la fonction. Les modifications apportées au paramètre dans la fonction n'affectent pas l'argument d'origine.
Par exemple:
#include
intsquare(int num){
num = num * num;
return num;
}intmain(){
int x = 5;
int y = square(x);// Output: x and y after function call: 5 25
printf("x and y after function call: %d %d\n", x, y);
return0;
}
- La fonction carré prend un paramètre entier, num.
- La fonction carré calcule le carré de num, met à jour sa valeur et renvoie cette nouvelle valeur.
- La fonction main déclare une variable entière, X, et lui attribue la valeur 5.
- Il appelle ensuite la fonction carré en lui transmettant la valeur de x. Il affecte le résultat à une deuxième variable, oui.
- Après l'appel de la fonction, main imprime les valeurs de x et y. La valeur x reste la même car la modification du paramètre num à l’intérieur du carré n’affecte pas le x d’origine.
Passer par référence
En utilisant cette approche, vous transmettez l’adresse mémoire (pointeur) d’une valeur à une fonction. Les modifications apportées au paramètre à l’intérieur de la fonction affectent la valeur d’origine à l’extérieur de celle-ci.
Les pointeurs, y compris leur utilisation comme paramètres, sont l'un des aspects de C qui le rend différent d'un langage comme Python.
#include
voidsquare(int *num){
*num = *num * *num;
}intmain(){
int x = 5;
square(&x);
// Output: x after function call: 25
printf("x after function call: %d\n", x);
return0;
}
- Le carré la fonction prend un pointeur entier (entier *) paramètre, num. Il ne renvoie pas de valeur.
- La fonction carré calcule le carré de la valeur qui num contient et met à jour cette valeur à l'aide de l'opérateur de déréférencement de pointeur, *.
- Le principal la fonction déclare une variable entière, X, et lui attribue la valeur 5.
- Il appelle alors le carré fonction avec un pointeur vers X en utilisant l'adresse de l'opérateur: &X.
- Après l'appel de fonction, main imprime la valeur de X, qui est maintenant 25 depuis les changements apportés *numéro à l'intérieur de carré La fonction affecte l'original X.
En résumé, la principale différence entre les deux méthodes réside dans la façon dont les modifications apportées au paramètre à l’intérieur de la fonction affectent la valeur d’origine à l’extérieur de celle-ci. Le passage par valeur crée une copie, tandis que le passage par référence (pointeur) permet une manipulation directe de la valeur d'origine.
D'autres langages ont souvent un équivalent des pointeurs du C, mais ils fonctionnent généralement à un niveau supérieur. Un exemple est Prise en charge par C# des variables out.
Fonctions vides
Les fonctions vides en programmation C sont des fonctions qui ne renvoient pas de valeur. Utilisez-les pour effectuer des actions ou des tâches sans produire de résultat. Ils peuvent modifier leurs paramètres en utilisant le passage par référence, mais ce n'est pas obligatoire.
Voici un exemple de fonction void :
#include
// Void function with no parameters
voidgreet(){
printf("Hello, MUO!");
}intmain(){
// Call the void function, output: "Hello, MUO!"
greet();
return0;
}
Les fonctions Void sont utiles pour effectuer des actions, imprimer des messages, modifier des données ou effectuer des tâches sans nécessiter de valeur de retour.
Explorez les fonctions de la programmation C
La pratique par la création de fonctions améliore votre compréhension et votre application en programmation C. De plus, il améliore la lisibilité du code et la facilité de maintenance. Plongez dans diverses applications de fonctions pour découvrir leurs avantages.
Lorsque vous maîtrisez les principes fondamentaux des fonctions C et que vous souhaitez vous mettre au défi, envisagez de vous plonger dans la récursivité.