Suositeltava, 2024

Toimituksen Valinta

Pointerin ja viitteen välinen ero

"Osoitin" ja "viite" molemmat käytetään osoittamaan tai viittaamaan toista muuttujaa. Mutta molempien keskinäinen ero on se, että osoitinmuuttuja osoittaa muuttujaan, jonka muistipaikka on tallennettu siihen. Vertailumuuttuja on sille määritetyn muuttujan aliakseli. Alla olevassa vertailukaaviossa tarkastellaan muita osoittimen ja viitteen välisiä eroja.

Vertailukaavio

Vertailun perusteOsoitinViite
perustiedotOsoitin on muuttujan muistiosoite.Viite on muuttujan alias.
tuottoOsoitemuuttuja palauttaa osoitteen muuttujaan tallennetussa osoitteessa olevan arvon, jota edeltää osoitinmerkki '*'.Vertailumuuttuja palauttaa muuttujan osoitteen, jota edeltää viitemerkki '&'.
operaattorit*, ->&
Null-viiteOsoitemuuttuja voi viitata NULL-arvoon.Viitemuuttuja ei voi koskaan viitata NULL-arvoon.
alustusVoidaan luoda alustamaton osoitin.Alustamatonta viittausta ei voi koskaan luoda.
AlustusajankohtaOsoitemuuttuja voidaan alustaa milloin tahansa ohjelmassa.Viitemuuttuja voidaan alustaa vain sen luomisen yhteydessä.
uudelleenalustusOsoitemuuttuja 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 = 6 

Tyypin 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

  1. Viite on kuin toisen nimen luominen muuttujan siirtämiseksi niin, että siihen voidaan viitata eri nimillä. Toisaalta osoitin on yksinkertaisesti muuttujan muistiosoite.
  2. Osoitteen muuttuja, jos sitä edeltää '*', palauttaa muuttujan arvon, jonka osoite tallennetaan osoitinmuunnokseen. Viittausmuuttuja, jota edeltää '&', palauttaa kyseisen muuttujan osoitteen.
  3. Osoitinoperaattorit ovat * ja -> kun taas viiteoperaattori on &.
  4. Osoitemuuttuja, jos sillä ei ole mitään muuttujan osoitetta, se osoittaa nollaan. Toisaalta viitemuuttuja ei voi koskaan viitata Nulliin.
  5. Voit aina luoda yhtenäisen osoittimen muuttujan, mutta luomme referenssin, kun tarvitsemme jonkin muuttujan aliaksen, jotta et voi koskaan luoda yhtenäistä referenssia.
  6. Voit käynnistää osoittimen uudelleen, mutta kun olet alustanut arefernce, et voi uudelleen käynnistää sitä uudelleen.
  7. 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.

Top