Outils d'utilisateurs

Outils du Site


variadic

Différences

Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.

Lien vers cette vue

variadic [2014/10/07 12:19]
gbdivers créée
variadic [2016/07/05 18:55] (Version actuelle)
gbdivers
Ligne 2: Ligne 2:
 ^ Chapitre précédent ^ [[programmez_avec_le_langage_c|Sommaire principal]] ^ Chapitre suivant ^ ^ Chapitre précédent ^ [[programmez_avec_le_langage_c|Sommaire principal]] ^ Chapitre suivant ^
  
-====== Les classes et fonctions variadiques ======+====== [Aller plus loin] Les classes et fonctions variadiques ======
  
 http://en.cppreference.com/w/cpp/language/parameter_pack et http://en.cppreference.com/w/cpp/language/sizeof... http://en.cppreference.com/w/cpp/language/parameter_pack et http://en.cppreference.com/w/cpp/language/sizeof...
  
-===== Fonctions avec nombre de paramètres non fixé =====+===== Fonctions avec nombre de paramètres non fixés =====
  
 Permet d'écrire une fonction avec un nombre variable de paramètres de fonction. Exemple simple : on veut afficher un tableau avec des variables. Première approche, avec fonctions classiques et paramètre par défaut : Permet d'écrire une fonction avec un nombre variable de paramètres de fonction. Exemple simple : on veut afficher un tableau avec des variables. Première approche, avec fonctions classiques et paramètre par défaut :
Ligne 34: Ligne 34:
 </code> </code>
  
-Premier affiche toujours 4 colonnes (remplit avec des 0 si nécessaire). La seconde évite les 0 inutiles, mais nécessite d'écrire une fonction pour chaque possibilité.+La première affiche toujours 4 colonnes (remplit avec des 0 si nécessaire). La seconde évite les 0 inutiles, mais nécessite d'écrire une fonction pour chaque possibilité.
  
 Améliorable pour ne pas prendre que des int : Améliorable pour ne pas prendre que des int :
Ligne 60: Ligne 60:
 </code> </code>
  
-Très lourd à écrire, nombre maximal de paramètres fixé+Très lourd à écrire, nombre maximal de paramètres fixés
  
 ===== Les fonctions variadiques ===== ===== Les fonctions variadiques =====
Ligne 66: Ligne 66:
 Possibilité d'indiquer qu'une fonction prend un nombre indéterminé de paramètres. A la compilation, le compilateur déterminer lui même le nombre de paramètre. Possibilité d'indiquer qu'une fonction prend un nombre indéterminé de paramètres. A la compilation, le compilateur déterminer lui même le nombre de paramètre.
  
-Comme on ne connaît pas le nombre de paramètres, le plus simple est d'utiliser une fonction récursive, avec une condition d'arrêt. L'idée est que l'on définie une fonction qui prend N paramètres et utilise la fonction N-1 paramètres (fonction récursive) et une fonction qui prend 1 paramètres et s'appelle pas de fonction N (condition d'arrêt).+Comme on ne connaît pas le nombre de paramètres, le plus simple est d'utiliser une fonction récursive, avec une condition d'arrêt. L'idée est que l'on définie une fonction qui prend N paramètres et utilise la fonction N-1 paramètres (fonction récursive) et une fonction qui prend 1 paramètre et s'appelle pas de fonction N (condition d'arrêt).
  
 En pseudo code : En pseudo code :
Ligne 79: Ligne 79:
 </code> </code>
  
-Si on appelle ce code avec 5 paramètres par exemple, le code précédent est "déroulé" (ie convertie en une suite de fonctions non récursive) de la façon suivante :+Si on appelle ce code avec 5 paramètres par exemple, le code précédent est "déroulé" (ie convertie en une suite de fonctions non récursives) de la façon suivante :
  
 <code> <code>
Ligne 95: Ligne 95:
  
 f(2 paramètres) { f(2 paramètres) {
-    appel de f(1 paramètres)+    appel de f(1 paramètre)
 } }
  
variadic.1412677194.txt.gz · Dernière modification: 2014/10/07 12:19 par gbdivers