Maîtriser les fonctions en C : Structure, déclaration et bonnes pratiques
Une fonction est un groupe d'instructions réalisant une tâche. Tout programme C a au moins main(), et peut définir d'autres fonctions.
Divisez votre code en fonctions logiques, chacune effectuant une tâche précise.
Une déclaration (prototype) informe le compilateur du nom, type de retour et paramètres. Une définition fournit le corps effectif.
La bibliothèque standard C offre de nombreuses fonctions intégrées : strcat(), memcpy(), etc.
Synonymes : méthode, sous-routine, procédure.
Définition d'une fonction
Forme générale :
type_retour nom_fonction(liste_paramètres) {
corps de la fonction
}
Composants :
Type de retour : type de la valeur retournée. void si rien n'est retourné.
Nom de la fonction : identifiant. Nom + liste paramètres = signature.
Paramètres : placeholders. À l'appel, on passe des arguments (valeurs réelles). Liste = types, ordre, nombre. Optionnels.
Corps : ensemble d'instructions définissant ce que fait la fonction.
Exemple : fonction max()
/* retourne le maximum entre deux nombres */
int max(int num1, int num2) {
int result;
if (num1 > num2)
result = num1;
else
result = num2;
return result;
}
Déclarations de fonction (prototypes)
Informent le compilateur comment appeler la fonction. Le corps peut être défini ailleurs.
type_retour nom_fonction(liste_paramètres);
Pour max() :
int max(int num1, int num2);
Les noms de paramètres sont optionnels dans la déclaration, seuls les types comptent :
int max(int, int);
Nécessaire si la fonction est définie dans un fichier source et appelée depuis un autre : déclarez-la en haut du fichier appelant.
Appel de fonction
Pour utiliser une fonction, appelez-la avec les arguments requis. Le contrôle passe à la fonction appelée, qui exécute sa tâche, puis retourne le contrôle (via return ou fin de corps).
Si la fonction retourne une valeur, stockez-la. Exemple :
#include <stdio.h>
int max(int num1, int num2); // prototype
int main() {
int a = 100, b = 200, ret;
ret = max(a, b); // appel
printf("Max = %d\n", ret);
return 0;
}
int max(int num1, int num2) {
int result;
if (num1 > num2) result = num1;
else result = num2;
return result;
}
Résultat : Max = 200
Arguments de fonction
Si une fonction utilise des arguments, elle doit déclarer des variables (paramètres formels) pour les recevoir. Comportement comme variables locales : créées à l'entrée, détruites à la sortie.
Deux modes de passage :
| N° | Mode et description |
|---|---|
| 1 | Passage par valeur : copie la valeur de l'argument dans le paramètre. Modifications locales sans effet sur l'argument original. Défaut en C. |
| 2 | Passage par référence : copie l'adresse de l'argument. La fonction accède à l'original via l'adresse. Modifications affectent l'argument. |
Par défaut, C utilise le passage par valeur. Le code dans une fonction ne peut pas altérer les arguments d'appel (sauf si on passe explicitement des adresses/pointeurs).
Langue C
- Quatre modèles éprouvés pour les fonctions définies par l'utilisateur en C
- Comment passer des tableaux 1D et 2D aux fonctions en C – Guide pratique
- Maîtriser les fonctions de la bibliothèque standard C : Guide pratique
- Maîtriser les fonctions lambda Python : exemples pratiques et bonnes pratiques
- Maîtriser les Fonctions Verilog pour une Conception RTL Efficace
- Utilisation efficace de la mémoire avec les champs de bits en C
- Maîtriser les entrées/sorties fichiers en C : Création, ouverture et gestion
- Maîtriser les arguments variables en C : Guide pratique
- Comprendre le polymorphisme en C++ : Guide pratique