Valaki el tudná magyarázni ez mért van így? (referencia vs érték)?
"Nem rég" kezdtem el tanulgatni a nyelvet és a referencia érték közötti kapcsolatot/különbséget próbálnám értelmezni . Adott az alábbi kód:
és nem értem mért ez lesz a kimenete.Az ErtekatadoPelda(ertek) sorral meghívjuk az ErtekatadoPelda eljárást aminél írja is, hogy ertek = 2.1; de mikor futtatom,akkor nem ez lesz az eredmény, hanem 3,14. Ez mért van, hisz meghívtuk nem? Azt se értem mért 2.1 lesz a ReferenciaPelda(o) sornak hisz 2-vel felette az o.ertek sorral 3.14-et adtunk az o-nak. Szóval akkor ez most, hogy van?
Millió helyen le van írva mi a különbség a referencia és érték típus között. Nézz utána.
Abszolút semmi értelme leírni ide pongyolán 10 milliomodjára.
Aha, aha.
Amúgy Google első találata lett belinkelve, tehát elképzelni nem tudom mit olvasgattál eddig.
Alapvetően mind a két függvényed érték szerint veszi át a paramétert, vagyis másolatot készít róla, a függvényen belül ez lokális változóként működik. Az első esetben megkapja a 3,14 értéket és annak egy másolatával dolgozik. Tehát az első függvényben valóban beállítod, hogy az 2,1 legyen, csakhogy az egy másik "ertek", az eredetihez nem nyúltál.
A második esetben egy objektumhivatkozást kap a függvény, ami valójában egy, az objektumra mutató cím. Erről is másolatot készít, de mivel a konkrét érték egy cím, a függvényen belüli "referencia" ugyanarra az objektumra fog mutatni. Tehát a main "o"-ja és a ReferenciaPelda "referencia"-ja két külön változó, két külön érték, de ugyanoda mutat, ugyanazzal az objektummal dolgoznak. Emiatt amikor átírod az objektum adatát, az eredetit írod át.
Ez a fő különbség, hogy az érték az az érték, amivel dolgozunk, a referencia pedig egy hivatkozás az érték helyére. Ha az elsőt másoljuk le, akkor az külön életet fog élni. Ha a másodikat, az is, de attól még ugyanoda fog mutatni.
// Kb.
ertek = 1;
o = new osztaly();
// a képzeletbeli memóriában:
100 - 1 (ez az 'ertek', mondjuk ha int lenne)
104 - 112 (ez az 'o' referencia értéke, vagyis egy cím)
108 -
112 - ... és itt van az objektum.
#2 vagyok
Nem tudom ki az, aki ide jár lepontozni, de ha olyan okos akkor magyarázza már meg a kedves kérdezőnek a dolgokat :)
Van egy papírlapod, rajta valami tartalom (írás, rajz, akármi).
Érték szerinti paraméterátadás:
- fogsz egy üres papírt, rámásolod azt ami a saját lapodon is van, és a másolatot átadod a haverodnak, hogy csináljon vele, amit akar. A papírod tartalmát így megkapta, de attól hogy ő kiradírozza vagy összefirkálja a saját példányát, a tiéd változatlan marad.
Referencia szerinti paraméterátadás:
- nem készítesz másolatot, hanem átsétálsz a haverodhoz, és leteszed a papírodat az asztalra. Most mindketten ugyanazt a papírt nézitek. Akármit ír rá az egyikőtök, ugyanazt fogja látni a másik is.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!