J'aime pas le terme de paramètre de sortie.
C'est démodé, ça vient du c avec les read(buff), et ça dénote rien du tout.
Pour moi, buff existe déja, on l'a alloué, et read va y ranger des trucs dedans .
Je parle plutôt d'environnement de fonction. A cet instant, on voit un peu plus clair: buff est un espace mémoire qu'on donne à la fonction qui va s'en servir pour ranger ce qu'elle veut.
// la fameuse fonction swap
void swap1(int a,int b){
int tmp=a; a=b; b=tmp;
}
La fonction swap dispose d'un environnement de valeurs, pas de variables. Cette fonction échange 2 entiers dans sa propre mémoire (Super utile).
Si tu veux disposer des variables, tu dois faire
void swap2(int &a,int &b){
int tmp=a; a=b; b=tmp;
}
Cette fonction là dispose d'un environnement de 2 variables a et b (En simplifié, l'esperluette & veut dire je veux que mon a désigne la même variable que celle que je vais utiliser pour appeler swap())
Mais attention !
int a=33;
int b=44;
swap1(a,b); // possible
swap1(a,3); // possible
swap2(a,b); // possible
swap2(a,4); // IMPOSSIBLE ! swap2 veut 2 variables
Sans '&', ton compilateur va fabriquer un fonction qui prend des valeurs.
; I'm just keeping the hopeless cross to increase the meaninglessness