Zdravím,
mohl by mi někdo vysvětlit rozdíl mezi těmito třemi funkcemi?
(http://pastebin.com/5M6jB7fL)
Programuji už léta, vždy jsem využil dereferenci. Ovšem, tady jsou tři funkce a v parametrech je jak reference (&) a dereference (*). Návratové hodnoty jsem taky změnil.
Všechno mi šlo přeložit (IDE: Microsoft Visual C++).
Vždycky jsem měl problémy, co se může dávat za parametry, takže to shrnu:
Pokud máme proměnnou dereferenci: *ukazatel
- funkce(*prom) – dáváme: funkce(ukazatel)
- funkce(&prom) – dáváme: funkce(*ukazatel)
Pokud máme proměnnou klasiku: klasika
- funkce(&prom) – dáváme: funkce(klasika)
- funkce(*prom) – dáváme: funkce(&klasika)
Nebo jsou i jiné možnosti?
Moje otázky
1) Jaký je tedy rozdíl mezi referencí a dereferencí? Přijde mi to dosti analogické. Můžu si stále používat dereferenci?
Jakožto reference je adresa proměnné, dereference je též adresa proměnné, akorát na ní směřuje ukazatel.
2) Jaký je rozdíl mezi druhou a třetí funkcí?
Doufám, že si už v tom udělám absolutní jasno, i když ho mám, ale ne zcela úplné. Dobrý programátor toto prostě musí umět dokonale – aneb práce s pamětí.
Tímto bych chtěl i pozdravit kolegu a kámoše Matrixe, pokud si toto vlákno čte a hodí mi sem třeba i dobrou radu nad zlato. ;-)
Díky a mějte se – pěkný den.