Junior
Ispričajte o razlikama između referenci i pokazivača u jeziku C/C++.
sobes.tech АИ
Одговор од АИ
Referenca se može smatrati kao alias za postojeći objekat; pokazivač sadrži adresu memorije objekta.
| Karakteristika | Referenca | Pokazivač |
|---|---|---|
| Inicijalizacija | Mora biti inicijalizovana pri deklaraciji. | Može biti neinicializovan. |
| Prepisivanje | Ne može biti prepisana nakon inicijalizacije. | Može ukazivati na drugi objekat. |
| Null vrednost | Ne može biti null. | Može biti nullptr (C++11) ili NULL (C/C++). |
| Indeksiranje niza | Ne podržava direktnu aritmetiku pokazivača. | Podržava aritmetiku pokazivača. |
| Operatori | Koristi se direktno (. za članove). |
Koristi * za dereferencu, -> za članove. |
| Veličina | Nema sopstvenu veličinu, referiše na veličinu objekta. | Ima veličinu koja odgovara veličini adrese u sistemu (obično 4 ili 8 bajta). |
| Dodela memorije | Ne zahteva eksplicitno dodeljivanje/oslobađanje memorije. | Može zahtevati new/delete (u C++). |
| Upotreba | Često kao parametri funkcija za prenos putem referenci. | Za dinamičko dodeljivanje memorije, niskonivo pristupa. |
// Primer upotrebe referenci
int x = 10;
int& ref = x; // ref je alias za x
ref = 20; // x sada 20
// Primer upotrebe pokazivača
int y = 30;
int* ptr = &y; // ptr ukazuje na adresu y
*ptr = 40; // y sada 40
// Pokazivač može biti nullptr
int* null_ptr = nullptr;