Viitteet vs Osoittimet
Pyyhkäise näyttääksesi valikon
Viitteet ja osoittimet mahdollistavat epäsuoran pääsyn muuttujien arvoihin, mutta niillä on joitakin keskeisiä eroja sekä etuja ja haittoja.
Syntaksi
-
Osoittimet määritellään käyttämällä
*-symbolia; -
Viitteet määritellään käyttämällä
&-symbolia.
Alustus
Tyhjää viitettä ei voi määritellä. Sen sijaan tyhjän osoittimen voi määritellä käyttämällä nullptr.
Uudelleenosoitus
Viitteitä ei voi uudelleenosoittaa viittaamaan toiseen olioon.
main.cpp
12345678910111213#include <iostream> int main() { int x = 125, y = 500; // creating a reference to x variable int& ref_x = x; ref_x = y; // attempt to re-assigned ref_x ref_x = 0; std::cout << x << ' ' << y; }
Osoittimet voidaan uudelleenosoittaa osoittamaan eri muistipaikkoihin
main.cpp
12345678910111213#include <iostream> int main() { int x = 125, y = 500; // creating a pointer to x variable int* ptr = &x; ptr = &y; // attempt to re-assigned ref_x *ptr = 0; std::cout << x << ' ' << y; }
Arvon käsitteleminen
Osoittimen osoittamaan arvoon pääsee käsiksi käyttämällä dereferenssioperaattoria *. Viitteiden kohdalla erityistä operaattoria ei tarvita; viite muuttujaa käytetään suoraan.
Sekä osoittimet että viitteet ovat keskeisiä muistin hallinnassa ja lisäävät ohjelmien joustavuutta. Käyttötarkoitus riippuu kontekstista.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme