Sobes.tech
Junior

Beszéljen a különbségekről a referencia és a mutató között a C/C++ nyelvben.

sobes.tech MI

Válasz az MI-től

Egy referencia egy meglévő objektum aliasaként értelmezhető; egy mutató tartalmazza az objektum memória címét.

Jellemző Referencia Mutató
Inicializálás Deklarációkor kell inicializálni. Nem feltétlenül inicializált.
Újra hozzárendelés Nem módosítható az inicializálás után. Másik objektumra mutathat.
Null érték Nem lehet null. Lehet nullptr (C++11) vagy NULL (C/C++).
Tömb indexelés Nem támogatja közvetlenül a mutatók aritmetikáját. Támogatja a mutató aritmetikát.
Operátorok Közvetlenül használható (. a tagokra). * a dereferáláshoz, -> a tagokra.
Méret Saját mérete nincs, az objektum méretére utal. Mérete megegyezik a rendszerben az cím méretével (általában 4 vagy 8 byte).
Memória foglalás Nem igényel explicit foglalást/felszabadítást. new/delete szükséges lehet (C++-ban).
Használat Gyakran függvényparaméterként referencia szerint átadva. Dinamikus memóriafoglalás, alacsony szintű hozzáférés.
// Referencia használatának példája
int x = 10;
int& ref = x; // ref x aliasa
ref = 20;     // x most 20

// Mutató használatának példája
int y = 30;
int* ptr = &y; // ptr y címére mutat
*ptr = 40;    // y most 40

// A mutató lehet nullptr
int* null_ptr = nullptr;