C++: Mi a különbség (használatban) az alábbi két deklarálás között?
Miért előnyös így létrehozni a változókat:
int * mutato = new int;
ehelyett:
int mutato;
Az első a heapen hozza létre az intet, a második a stacken. Itt annyi előnye lehet, hogy nem szűnik meg a stack megszűnésével (neked kell delete-lni).
De így ritkán használják, inkább változó méretű (dinamikus) tömbökhöz, vagy egyéb struktúráknál jön jól.
Használatban ha ki akarod olvasni a mutatóban lévő értéket, vagy írni akarsz bele, akkor dereferálni kell, így:
int* mutato = new int;
*mutato = 3;
if(*mutato == 3) std::cout << "ez bizony három" << std::endl;
Illetve nem "veszik el" az adat, ha kilépsz az aktuális scope-ból (tipikusan a következő }-kor), ellentében a sima int mutato; megoldással. Persze írni/olvasni csak akkor fogod tudni, ha valahol eltárolod a mutatót rá. És innentől a te felelősséged kitörölni 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!