Flipper wrote:Ik begrijp niet wat het verschil is tussen een waarde en variabele parameter.
Code: Select all
int tros(int gele_banaan, int& groene_banaan) {
...
}
De eerste is een waarde parameter, de tweede is een variabele parameter, tot zover is het me duidelijk, maar daarna
Ik moet dit begrijpen voordat ik aan de opgave over het maken van een conversie-library kan beginnen. Daar vragen ze immers om minstens 1 conversiefunctie met waarde en variabele parameter te schrijven en ook minstens één conversiefunctie met een return waarde. Vandaar mijn 2e vraagje: is er dan een verschil tussen deze 2 type functies? Ik dacht dat zowat elke functie wel "iets" moet returnen...
Stel, u code is als volgt
Code: Select all
int tros(int gele_banaan, int& groene_banaan){
gele_banaan = gele_banaan + 2;
groene_banaan = groene_banaan + 2;
}
int gele_banaan = 0;
int groene_banaan = 0;
tros(gele_banaan, groene_banaan);
cout << "Gele: " << gele_banaan << " Groene: " << groene_banaan << endl;
Ge gaat volgende output krijgen:
Bij waarde parameter (dus zonder &) gaat ge enkel de waarde van u variabele meegeven. Dus in u functie gatem een lokale kopie van die variabele maken, die +2 doen, dus dn originele blijft ongewijzigd. Bij u variabele parameter (pass by reference) gaat ge ni de waarde, maar het ADRES van u variabele meegeven. Dus u functie gaat da zien, naar da adres gaan, u variabele ophalen, en daar +2 op doen, waardoor u originele wordt gewijzigd.
Ik suck @ dingen opletten, maar khoop da get snapt?
En @ u 2de vraag: een functie moet ni altij iets returnen, in da vorig voorbeeld kan u functie even goe
Code: Select all
void tros(int gele_banaan, int& groene_banaan)
zijn, wa zoveel betekent als "Deze functie geeft niets terug". Het is ook ni verplicht om nen return te zette in een functie die bv nen int zou moeten returnen, buiten wanneer ge bv zegt
Code: Select all
int resultaat = tros(gele_banaan, groene_banaan)
Want dan verwacht ge effectief dat ge een waarde terugkrijgt die ge in u nieuwe variabele stopt.