Vertailukaavio
Vertailun peruste | Osoitin | Viite |
---|---|---|
perustiedot | Osoitin on muuttujan muistiosoite. | Viite on muuttujan alias. |
tuotto | Osoitemuuttuja palauttaa osoitteen muuttujaan tallennetussa osoitteessa olevan arvon, jota edeltää osoitinmerkki '*'. | Vertailumuuttuja palauttaa muuttujan osoitteen, jota edeltää viitemerkki '&'. |
operaattorit | *, -> | & |
Null-viite | Osoitemuuttuja voi viitata NULL-arvoon. | Viitemuuttuja ei voi koskaan viitata NULL-arvoon. |
alustus | Voidaan luoda alustamaton osoitin. | Alustamatonta viittausta ei voi koskaan luoda. |
Alustusajankohta | Osoitemuuttuja voidaan alustaa milloin tahansa ohjelmassa. | Viitemuuttuja voidaan alustaa vain sen luomisen yhteydessä. |
uudelleenalustus | Osoitemuuttuja voidaan aloittaa uudelleen niin monta kertaa kuin tarvitaan. | Referenssimuuttujaa ei voi koskaan käynnistää uudelleen ohjelmassa. |
Osoitteen määritelmä
"Osoitin" on muuttuja, joka pitää toisen muuttujan muistipaikkaa. Osoitemuuttujan käyttämät operaattorit ovat * ja ->. Osoitteen muuttujan ilmoitus sisältää perusdatatyypin, jota seuraa merkki * ja muuttujan nimi.
kirjoita * var_name;
Ymmärtäkäämme osoitinta esimerkin avulla.
int a = 4; int * ptr = & a; cout <Tässä on kokonaisluku muuttuja a ja, muuttujan ptr muuttuja, joka tallentaa muuttujan a osoitteen.
Osoitin aritmeettinen
Osoitemuuttujaa voidaan käyttää kahdella aritmeettisella operaattorilla, jotka ovat "lisäys" ja "vähennys". Lisäykseksi kutsutaan "lisäys", ja vähennys on nimeltään "vähennys". Kun osoitinmuuttujaa kasvatetaan, se osoittaa seuraavan perusmuuttujan muuttujan muistipaikkaan. Kun osoitinmuuttujaa pienennetään, se osoittaa edellisen muuttujan muistipaikkaan sen perustyypistä. Täten taulukkoa voidaan käyttää tehokkaasti osoittimen muuttujalla.
Useita epäsuoria
Osoitin osoittaa toiseen osoittimen muuttujaan, joka osoittaa kohdearvoon. Tällainen osoitin alustetaan aina toisen osoittimen muuttujan osoitteen kanssa. Osoitteen osoittaminen osoittimelle on seuraavanlainen.
kirjoita ** var_name;Tarkastellaan sitä esimerkin avulla.
int a = 4; int * ptr1 = & a; int ** ptr2 = & ptr1; cout <Toimintopainike
Kuten tiedämme, että funktio ei ole muuttuja, sillä on edelleen muistipaikka, joka voidaan osoittaa osoitinmuuttujalle. Kun osoitin osoittaa toimintoon, toiminto voidaan kutsua kyseisellä funktionäppäimellä.
Tärkeitä kohtia, jotka on syytä muistaa osoittimesta.
- Osoitemuuttuja voidaan luoda ilman sen alustusta, ja se voidaan alustaa missä tahansa ohjelmassa.
- Osoitemuuttuja voidaan aloittaa uudelleen toiseen muuttujaan.
- Osoitemuuttuja voi viitata NULL-arvoon.
Viitteen määritelmä
Viitemuuttujaa käytetään viittaamaan muuttujaan, joka on osoitettu kyseiselle viitemuuttujalle. Viitemuuttujan käyttämä operaattori on '&'. Vertailumuuttujan ilmoitus sisältää perustyypin, jota seuraa '&' -merkki ja sitten muuttujan nimi.
kirjoita & refer_var_name = var_ nimi;Täällä tyyppi on tietotyyppi, & operaattori vahvistaa, että se on referenssimuuttuja. Refer_var_name on viitemuuttujan nimi. Var_name on muuttujan nimi, jota haluamme viitemuuttujan viittaavan.
Ymmärretään referenssimuuttuja esimerkin avulla.
int a = 4; int & b = a; // b viittaa ab = 6; // nyt a = 6Tyypin int muuttujalle määritetään arvo 4. Referenssimuuttujalle määritetään muuttuja a, eli b on a: n alias. Nyt kun annamme toisen arvon b: lle, muutamme arvoa a. Näin ollen voidaan sanoa, että referenssimuuttujaan tehdyt muutokset tapahtuvat myös muuttujana, johon viitemuuttuja viittaa.
Tärkeintä on, että referenssimuuttuja on alustettava sen luomisen aikana. Kun referenssimuuttuja on alustettu muuttujalla, sitä ei voi uudelleen määrittää viittaamaan toiseen muuttujaan. Kun annat arvon referenssimuuttujalle, annat tämän arvon muuttujalle, johon viitemuuttuja osoittaa. Viitemuuttuja ei voi koskaan viitata NULL-arvoon. Aritmeettista ei voida suorittaa viitemuuttujalla.
Viitemuuttujaa voidaan käyttää kolmella tavalla:
- Toiminnon palautusarvona.
- Toimintoparametrina.
- Itsenäisenä viittauksena.
Pointerin ja viitteen väliset keskeiset erot
- Viite on kuin toisen nimen luominen muuttujan siirtämiseksi niin, että siihen voidaan viitata eri nimillä. Toisaalta osoitin on yksinkertaisesti muuttujan muistiosoite.
- Osoitteen muuttuja, jos sitä edeltää '*', palauttaa muuttujan arvon, jonka osoite tallennetaan osoitinmuunnokseen. Viittausmuuttuja, jota edeltää '&', palauttaa kyseisen muuttujan osoitteen.
- Osoitinoperaattorit ovat * ja -> kun taas viiteoperaattori on &.
- Osoitemuuttuja, jos sillä ei ole mitään muuttujan osoitetta, se osoittaa nollaan. Toisaalta viitemuuttuja ei voi koskaan viitata Nulliin.
- Voit aina luoda yhtenäisen osoittimen muuttujan, mutta luomme referenssin, kun tarvitsemme jonkin muuttujan aliaksen, jotta et voi koskaan luoda yhtenäistä referenssia.
- Voit käynnistää osoittimen uudelleen, mutta kun olet alustanut arefernce, et voi uudelleen käynnistää sitä uudelleen.
- Voit luoda tyhjän osoittimen ja alustaa sen milloin tahansa, mutta sinun on alustettava refrence vain, kun luot referenssin.
Huomautus:
Java ei tue viitteitä.
johtopäätös
Osoitinta ja viittausta käytetään molempien muuttujien osoittamiseen tai viittaamiseen. Mutta molemmat eroavat niiden käytöstä ja toteutuksesta.