Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Viitteet vs Osoittimet | Section
C++-Osoittimet ja Viittaukset

bookViitteet 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

main.cpp

copy
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

main.cpp

copy
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.

question mark

Mikä koodiesimerkki osoittaa oikein, että osoitin voidaan uudelleensijoittaa osoittamaan toiseen muuttujaan, mutta referenssiä ei voi?

Valitse oikea vastaus

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 11

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Osio 1. Luku 11
some-alt