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;