Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.
variadic [2015/02/16 10:24] woly |
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 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) |
} | } | ||