Le meilleur didacticiel C paramètre variable en 2024, dans ce didacticiel, vous pouvez apprendre C paramètre variable
Parfois, vous pouvez rencontrer une telle situation, vous voulez fonctionner avec un nombre variable d'arguments, plutôt que d'un nombre prédéfini d'arguments. langage C pour ce scénario fournit une solution qui vous permet de définir une fonction qui peut accepter un nombre variable de paramètres en fonction des besoins spécifiques. L'exemple suivant illustre la définition d'une telle fonction.
int func(int, fr. ) { . . . } int main() { func(1, 2, 3); func(1, 2, 3, 4); }
S'il vous plaît noter que la fonctionfunc () a des arguments écrits finaux que l' ellipse trois points (fr.),cet argument avant la suspension est toujoursint,ce qui représente le nombre total de paramètres variables à transmettre. Pour utiliser cette fonction, vous devez utiliser le fichier d' en- têtestdarg.h qui fournit la fonctionnalité de paramètres variables pour atteindre les fonctions et macros.les étapes spécifiques sont les suivantes:
Suivons maintenant les étapes ci-dessus pour écrire des fonctions avec un nombre variable d'arguments et renvoie leur moyenne:
#include <stdio.h> #include <stdarg.h> double average(int num,fr.) { va_list valist; double sum = 0.0; int i; /* 为 num 个参数初始化 valist */ va_start(valist, num); /* 访问所有赋给 valist 的参数 */ for (i = 0; i < num; i++) { sum += va_arg(valist, int); } /* 清理为 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 donne le résultat suivant. Il convient de noter que lamoyenne de la fonction ()est appelée à deux reprises, chaque fois que le premier paramètre représente le nombre total de paramètres variables sont transférées. Ellipses sont utilisés pour fournir un nombre variable d'arguments.
Average of 2, 3, 4, 5 = 3.500000 Average of 5, 10, 15 = 10.000000