C - Arguments variables
Parfois, vous pouvez rencontrer une situation, lorsque vous voulez avoir une fonction, qui peut prendre un nombre variable d'arguments, c'est-à-dire des paramètres, au lieu d'un nombre prédéfini de paramètres. Le langage de programmation C fournit une solution à cette situation et vous êtes autorisé à définir une fonction qui peut accepter un nombre variable de paramètres en fonction de vos besoins. L'exemple suivant montre la définition d'une telle fonction.
int func(int, ... ) { . . . } int main() { func(1, 2, 3); func(1, 2, 3, 4); }
A noter que la fonction func() a son dernier argument sous forme d'ellipses, c'est-à-dire trois points (... ) et celui juste avant les ellipses est toujours un int qui représentera le nombre total d'arguments variables passés. Pour utiliser une telle fonctionnalité, vous devez utiliser stdarg.h fichier d'en-tête qui fournit les fonctions et les macros pour implémenter la fonctionnalité des arguments variables et suivre les étapes indiquées −
-
Définissez une fonction avec son dernier paramètre comme des ellipses et celui juste avant les ellipses est toujours un int qui représentera le nombre d'arguments.
-
Créer une va_list variable de type dans la définition de la fonction. Ce type est défini dans le fichier d'en-tête stdarg.h.
-
Utilisez int paramètre et va_start macro pour initialiser la va_list variable à une liste d'arguments. La macro va_start est définie dans le fichier d'en-tête stdarg.h.
-
Utilisez va_arg macro et va_list variable pour accéder à chaque élément de la liste d'arguments.
-
Utiliser une macro va_end pour nettoyer la mémoire assignée à va_list variables.
Suivons maintenant les étapes ci-dessus et écrivons une fonction simple qui peut prendre le nombre variable de paramètres et renvoyer leur moyenne −
Démo en direct#include <stdio.h> #include <stdarg.h> double average(int num,...) { va_list valist; double sum = 0.0; int i; /* initialize valist for num number of arguments */ va_start(valist, num); /* access all the arguments assigned to valist */ for (i = 0; i < num; i++) { sum += va_arg(valist, int); } /* clean memory reserved for valist */ va_end(valist); return sum/num; } int main() { printf("Average of 2, 3, 4, 5 = %f\n", average(4, 2,3,4,5)); printf("Average of 5, 10, 15 = %f\n", average(3, 5,10,15)); }
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant. A noter que la fonction average() a été appelé deux fois et à chaque fois, le premier argument représente le nombre total d'arguments variables passés. Seules les ellipses seront utilisées pour passer un nombre variable d'arguments.
Average of 2, 3, 4, 5 = 3.500000 Average of 5, 10, 15 = 10.000000
Langue C
- Types de fonctions définies par l'utilisateur dans la programmation C
- Classe de stockage C
- Passer des tableaux à une fonction en C
- Arguments de la fonction Python
- Variables et types C++ :int, double, char, string, bool
- Variable C, types de données, constantes
- Affectations Verilog
- C- Variables
- C-Fonctions