Extrait du cours programmation en langage C
4.9 Fonctions avec un nombre variable de paramètres
Il est possible en C de définir des fonctions qui ont un nombre variable de paramètres. En pratique, il existe souvent des méthodes plus simples pour gérer ce type de problème: toutefois, cette fonctionnalitè est indispensable dans certains cas, notamment pour les fonctions printf et scanf.
Une fonction possédant un nombre variable de paramétre doit possèder au moins un paramètre formel fixe. La notation . . . (obligatoirement à la fin de la liste des paramétres d’une fonction) spécifie que la fonction possède un nombre quelconque de paramètres (éventuellement de types différents) en plus des paramètres formels fixes. Ainsi, une fonction ayant pour prototype int f(int a, char c, …);
prend comme paramètre un entier, un caractère et un nombre quelconque d’autres paramètres.
De meme le prototype de la fonction printf est int printf(char *format, …);
puisque printf a pour argument une chaine de caractères spécifiant le format des données à imprimer, et un nombre quelconque d’autres arguments qui peuvent être de types différents.
Un appel à une fonction ayant un nombre variable de paramètres s’effectue comme un appel à n’importe quelle autre fonction.
Pour accéder à la liste des paramètres de l’appel, on utilise les macros définies dans le fichier en-tete stdarg.h de la librairie standard. Il faut tout d’abord déclarer dans le corps de la fonction une variable pointant sur la liste des paramètres de l’appel ; cette variable a pour type va list. Par exemple, va_list liste_parametres;
Cette variable est tout d’abord initialisée à l’aide de la macro va start, dont la syntaxe est va_start(liste_parametres, dernier_parametre);
ou dernier parametre désigne l’identificateur du dernier paramètre formel fixe de la fonction.
Après traitement des paramètres, on libère la liste à l’aide de la va end:
va_end(liste_parametres);
On accède aux différents paramètres de liste par la macro va arg qui retourne le paramètre suivant de la liste:
va_arg(liste_parametres, type)
………
Sommaire: Programmation en langage C
1 Les bases de la programmation en C
1.1 Historique
1.2 La compilation
1.3 Les composants élémentaires du C
1.3.1 Les identificateurs
1.3.2 Les mots-clefs
1.3.3 Les commentaires
1.4 Structure d’un programme C
1.5 Les types prédéfinis
1.5.1 Le type caractère
1.5.2 Les types entiers
1.5.3 Les types flottants
1.6 Les constantes
1.6.1 Les constantes entières
1.6.2 Les constantes réelles
1.6.3 Les constantes caractères
1.6.4 Les constantes chaines de caractères
1.7 Les opérateurs
1.7.1 L’affectation
1.7.2 Les opérateurs arithmétiques
1.7.3 Les opérateurs relationnels
1.7.4 Les opérateurs logiques booléens
1.7.5 Les opérateurs logiques bit à bit
1.7.6 Les opérateurs d’affectation composée
1.7.7 Les opérateurs d’incrémentation et de décrémentation
1.7.8 L’opérateur virgule
1.7.9 L’opérateur conditionnel ternaire
1.7.10 L’opérateur de conversion de type
1.7.11 L’opérateur adresse
1.7.12 Règles de priorité des opérateurs
1.8 Les instructions de branchement conditionnel
1.8.1 Branchement conditionnel if—else
1.8.2 Branchement multiple switch
1.9 Les boucles
1.9.1 Boucle while
1.9.2 Boucle do—while
1.9.3 Boucle for
1.10 Les instructions de branchement non conditionnel
1.10.1 Branchement non conditionnel break
1.10.2 Branchement non conditionnel continue
1.10.3 Branchement non conditionnel goto
1.11 Les fonctions d’entrées-sorties classiques
1.11.1 La fonction d’écriture printf
1.11.2 La fonction de saisie scanf
1.11.3 Impression et lecture de caractères
1.12 Les conventions d’´ecriture d’un programme C
2 Les types composés
2.1 Les tableaux
2.2 Les structures
2.3 Les champs de bits
2.4 Les unions
2.5 Les énumérations
2.6 Définition de types composés avec typedef
3 Les pointeurs
3.1 Adresse et valeur d’un objet
3.2 Notion de pointeur
3.3 Arithmétique des pointeurs
3.4 Allocation dynamique
3.5 Pointeurs et tableaux
3.5.1 Pointeurs et tableaux à une dimension
3.5.2 Pointeurs et tableaux à plusieurs dimensions
3.5.3 Pointeurs et chaines de caractères
3.6 Pointeurs et structures
3.6.1 Pointeur sur une structure
3.6.2 Structures auto-référencées
4 Les fonctions
4.1 Définition d’une fonction
4.2 Appel d’une fonction
4.3 Déclaration d’une fonction
4.4 Durée de vie des variables
4.4.1 Variables globales
4.4.2 Variables locales
4.5 Transmission des paramètres d’une fonction
4.6 Les qualificateurs de type const et volatile
4.7 La fonction main
4.8 Pointeur sur une fonction
4.9 Fonctions avec un nombre variable de paramètres
……..
Programmation en langage C (432 KO) (Cours PDF)