C ja C++ ovat yleisimmin käytettyjä ohjelmointikieliä, koska ne ovat aloittelijan perusovet ohjelmointimaailmaan. Osoittimet ja viittaukset ovat eräitä hyödyllisimmistä näiden kielten tarjoamista palveluista. Osoittimia käytetään C- ja C++-kielissä, ja viittauksia tuetaan C++:ssa, Pythonissa ja muissa kielissä.
Osoitin vs viite
Ero osoittimen ja viitteen välillä on se, että osoitin tallentaa siihen jonkin muun muuttujan osoitteen, kun taas viittaus viittaa olemassa olevaan muuttujaan jollakin muulla nimellä. Osoittimet tallentavat minkä tahansa muun muuttujan osoitteen sen muistiin, mutta viittauksia käytetään vaihtoehtoisena identiteettinä.
Osoitin on muuttuja, jonka arvona on toisen muuttujan osoite tai sijainti. Ne voidaan alustaa missä tahansa ohjelmassa operaattorilla, kuten "*" ja "->". Osoitinmuuttuja voidaan myös tehdä tyhjäksi ja ne tukevat myös uudelleenalustusta. Osoittimet määritellään perustietotyypin mukaan, jota seuraa tähti ja osoittimen nimi.
Viite on se muuttuja, jolla on toinen nimi ohjelman jo hienovaraiselle muuttujalle. Heti kun viitemuuttuja on luotu, se tulee alustaa. Se tekee aliaksen toiselle muuttujalle. &-operaattoria käytetään suunnitteluviittauksiin. Ne tehdään perustietotyypin mukaan, jota seuraa "&" ja muuttujan nimi.
Osoittimen ja viitteen vertailutaulukko
Vertailuparametrit | Osoitin | Viite |
Määritelmä | Muuttujaa, joka sisältää toisen muuttujan muistiosoitteen, kutsutaan osoitinmuuttujaksi. | Viittaus on alias toiseen muuttujaan, viittaus siihen. |
Nollaviittaus | Osoittimelle voidaan määrittää nolla-arvo. | Viitemuuttujalla ei ole nolla-arvoa. |
Syntaksi | Tietotyyppi *PointerName; Missä Datatype on perustietotyyppi ja PointerName on ilmoitetun osoittimen nimi. | Tietotyyppi &ReferenceName = OtherVariable; Missä ReferenceName on viitteen nimi ja OtherVariable on muuttuja, johon viitataan. |
Alustus | Alustamattomia osoittimia on mahdollista luoda. | Viittauksia ei voi koskaan luoda alustamattomaan |
Uudelleenalustus | Osoitinmuuttujia voidaan alustaa uudelleen ja uudelleen ohjelmassa tarpeen mukaan. | Viitemuuttuja voidaan alustaa vain kerran ohjelmassa. |
Mikä on Pointer?
Lyhyesti sanottuna osoitin on muuttuja, joka sisältää minkä tahansa ohjelman muun muuttujan muistipaikan tai osoitteen. Osoittimet toimivat C:ssä ja C++:ssa. Osoitinmuuttuja tallentaa osoitusmuuttujan osoitepaikan. Osoitinmuuttujat voidaan ilmoittaa ja sitten ne voidaan alustaa muuttujalla, jonka osoite on määritettävä.
int *osoitinmuuttuja;
Osoittimen määrittämisen jälkeen osoitinmuuttuja määrätään muuttujalle, jonka osoite halutaan määrittää. Yllä oleva ilmoituslause käyttää osoitinta, joka tallentaa kokonaislukumuuttujan arvon.
osoitinmuuttuja = &a;
Tässä a on ohjelman toisella puolella käytetty kokonaislukumuuttuja, jonka osoite on tallennettu muuttujaosoittimeen. Osoittimet antavat myös vastuun uudelleenalustamiseen. Niiden arvoja voidaan muuttaa tarpeen mukaan.
Mikä on viite?
Viitemuuttuja on alias toiselle muuttujalle. Toisin sanoen muuttujaa, joka viittaa ohjelman toiseen olemassa olevaan muuttujaan, pidetään viitemuuttujana.
Niillä on rajoitus, että niitä ei voi määrittää nolla-arvoon eikä niitä voida ilmoittaa, ne vain alustetaan. Viitteen luomisen jälkeen muuttujaan pääsee käsiksi viitteen nimellä tai sen alkuperäisellä nimellä. Viittaukset alustetaan suoraan. Esimerkki,
int &ref = var;
Tässä ref on viitemuuttujan nimi ja se osoittaa muuttujaan var, joka on alustettu ohjelman toisessa osassa. Kun ref:n ja var:n arvot tulostetaan, ref:llä ja var:lla havaitaan olevan sama arvo. Osoittimet ovat hyödyllisiä muistin säästämisessä, koska kun ne välitetään argumentteina funktiolle, ne käyttävät alkuperäistä muistipaikkaa jokaisessa funktiokutsussa.
Viitemuuttujat eivät tarjoa uudelleenalustusta, ne ovat vain kerran alustettuja ja ainutlaatuisia. Viittaukset eivät osoita muuttujaan tallentamalla sen osoitteen erilliseen muistipaikkaan. Yksinkertaisesti sanottuna viitemuuttuja on jo olemassa olevan muuttujan vaihtoehtoinen nimi. Nämä ovat vain aliaksia sen muuttujan toisessa nimessä, johon viitataan.
Tärkeimmät erot osoittimen ja viitteen välillä
Johtopäätös
Osoittimet ja viittaukset ovat laajoja konsepteja, joissa on erilaisia sovelluksia, lähinnä C- ja C++-kielissä. Molempia tulee kuitenkin käyttää oikeilla tarpeilla ja vaatimuksilla ennen käyttöönottoa. Viitemuuttujat eivät vaadi uudelleenalustamista tai uudelleenmääritystä, ja ne säästävät tilaa, koska ne tekevät tietotyypeistä redundantteja useita paikallisia kopioita, kun ne välitetään argumentteina funktiolle. Osoittimet ovat myös välttämättömiä, koska niissä on mahdollisuus tallentaa nolla-arvoja.
Viittauksen on aina viitattava johonkin ja se on välttämättä alustettava eikä sitä voi muuttaa. Osoittimet ovat uudelleenkäytettäviä. Tämä antaa heille mahdollisuuden uudelleenalustaa, josta puuttuu viitteitä.