Viittaus 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
Et voi määritellä tyhjää viitettä. Mutta voit määritellä tyhjän osoittimen 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; }
Pointterit 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