Ero C ++ -vertailun ja osoittimen välillä

Vaikka C ++ -viittaus osoittimeen näyttää olevan samanlainen, molempien C ++ -ohjeiden ja osoittimien välillä on merkittävä ero. Viitemuuttuja voidaan sanoa toisena nimellä olemassa olevalle muuttujalle. Kun tämä muuttuja on alustettu, muuttujan nimeä voidaan käyttää viittaamaan toiseen muuttujaan. Osoittimet, toisaalta, ovat muuttujia, jotka tallentavat muuttujan osoitteen. Kuten mikä tahansa muuttuja, nämä julistetaan ensin ja sitten minkä tahansa muuttujan osoite voidaan tallentaa niihin. Tarkastellaan yksityiskohtaisesti alla C ++ referenssi vs. osoitin erot.

Pään ja pään vertailu C ++ -vertailun ja osoittimen välillä (infografia)

Alla on seitsemän tärkeintä eroa C ++-referenssin ja osoittimen välillä

Keskeiset erot C ++-referenssin ja osoittimen välillä

Sekä C ++ -viite vs. osoitin ovat suosittuja valintoja markkinoilla; keskustelemme joistakin suurimmista eroista C ++ -vertailun ja osoittimen välillä:

Tärkein ero C ++ -ohjeen ja osoittimen välillä on se, että yksi viittaa toiseen muuttujaan, kun taas viimeksi mainittu tallentaa muuttujan osoitteen. Viitteet eivät tee muutoksia alkuperäiseen muuttujaan, kun taas osoitinta muutettaessa se vaikuttaa alkuperäiseen muuttujaan. Viite on alustettava ilmoitettaessa, kun osoitinta ei tarvitse alustaa heti, kun se on ilmoitettu. Joukko osoittimia voidaan luoda, kun taas joukkoa viitteitä ei voida luoda. Null-arvoa ei voida antaa viitteelle, mutta se voidaan osoittaa osoittimelle.

C ++ -viite vs. osoittimien vertailutaulukko

Ensisijaista vertailua C ++ -vertailun ja osoittimen välillä käsitellään alla:

C ++ -vertailun ja osoittimen vertailun perustaC ++ -viiteOsoitin
muuttujatViittauksen voidaan sanoa olevan aliaksen olemassa olevalle muuttujalle. Tämän muuttujan pääkäyttö toimii parametrina, joka toimii ohitusviitteenä. Tämä siirretään toiminnolle. Toiminto, jolle tämä välitetään, toimii alkuperäisellä muuttujalla kopion sijasta. Toiminnon sisällä tehdyt muutokset heijastuvat myös ulkopuolelle.Osoitinmuuttujat ovat muuttujia, jotka tallentavat osoitteen. Toisin kuin tavallisissa muuttujissa, kuten meillä, kuten int, double ja char, se tallentaa muistiosoitteet. Ohjelmoinnin helpottamiseksi tarvitaan tämä muuttuja. Se on muuttuja, joka voi tallentaa tietyn tyyppisen arvon.
ilmoitusC ++ -muuttujan ilmoittaminen tapahtuu lisäämällä '&' -merkki ennen muuttujaa. Kun sitä käytetään lausekkeella, se tarkoittaa, että se toimii operaattorin osoitteena. Sitä käytetään antamaan toinen nimi olemassa olevalle muuttujalle.
Syntaksi:
kirjoita & newName = olemasolevaNimi ;
// tai
kirjoita & newName = olemasolevaNimi ;
// tai
kirjoita & newName = olemasolevaNimi ;
Esimerkiksi:
/ * Testin viiteilmoitus ja alustaminen * /
#sisältää
käyttämällä nimitilaa std;
int main () (
merkkijonon nimi = “Priya”; // Ilmoita merkkijonomuuttuja nimeltä
merkkijono & refName = nimi; // Ilmoita viite (alias) muuttujan nimeen
// Sekä refName että nimi viittaavat samaan arvoon “Priya”
cout << nimi << endl; // Se tulostaa muuttujan “Priya” arvon
cout << refName << endl; // Se tulostaa referenssiarvon “Priya”
Vaihda nyt Nimen arvo
refName = “Karishma”; // Määritä uusi arvo refNamelle
cout << refName << endl;
cout << nimi << endl; // Numeron arvo muuttuu myös “Karishma”
nimi = ”Snehal”; // Anna nimelle uusi arvo uudelleen
cout << namer << endl;
cout << refName << endl; // refName-arvo muuttaa myös ”Snehal”
)
Tämä tarkoittaa, että viitemuuttujan arvoja voidaan muuttaa muuttujan alkuperäisessä ja kopiossa.
Ennen osoittimen käyttöä missä tahansa ohjelmassa se tulisi ilmoittaa etukäteen. Jotta voitaisiin osoittaa osoitin ja ilmoittaa järjestelmälle, että se on osoitin, muuttujan etuliite on '*'. Osoittimen mukana on tietotyyppi, joka voi olla int tai tupla jne.
Syntaksi:
tyyppi * pntr ; // Ilmoita osoittimen muuttuja nimeltä pntr tyypin osoittimeksi
// tai
tyyppi * pntr ;
// tai
tyyppi * pntr ;
Esimerkiksi:
int * newPtr; // Ilmoita osoitinmuuttuja nimeltä newPtr, joka osoittaa int (int-osoitin)
Tämä osoitin pitää osoitteen. Tällä osoitteella on int-arvo.
kaksinkertainen * newdPtr; // Ilmoita kaksoisosoitin
* Tarkoittaa, että osoitin julistetaan eikä se toimi operaattorina.
ReassignmentViitemuuttujaa ei voida määrittää uudelleen.
Esimerkki:
int x = 5;
int y = 6;
int & r = x;
Osoitin voidaan määrittää uudelleen, ja tämä ominaisuus on hyödyllinen, kun kehittäjä toteuttaa tietorakenteita, kuten linkitettyjä luetteloita, puita jne.
Esimerkki:
int x = 5;
int y = 6;
int * p;
p = & x;
p = & y;
MuistiosoiteViitemuuttujalla on sama osoite kuin alkuperäisellä muuttujalla. Nämä viitteet voidaan siirtää eri toimintoihin, ne voidaan tallentaa eri luokkiin jne. Viite ei koskaan osoita uutta muuttujaa, ennen kuin vanha on poistettu tai sen laajuus poistuu.Osoittimella on oma muistiosoite, joka tallentaa sen pinoon. Osoitin on itsenäinen muuttuja, ja sillä voi olla itselleen uusia arvoja.
Nolla-arvoViitteelle ei voi olla annettu nolla-arvoa.Osoittimelle voidaan antaa nolla-arvo suoraan.
argumentitViitemuuttujaan voidaan viitata ohittamalla arvon perusteella. Tässä argumentit välitetään arvolla funktioille. Klooni tehdään ja lähetetään toimintoon sitä käyttämällä. Kopioon tehdyillä muutoksilla ei ole vaikutusta alkuperäiseen muuttujaan.Kun haluamme muuttaa alkuperäisen kopion, se voidaan tehdä siirtämällä osoitin esineestä funktioon. Tätä kutsutaan ohituksena.
Milloin käyttääViitteet pääsevät epäsuorasti muuttujaan. Mieti seuraavaa esimerkkiä:
enum päivä
(
Sunnuntai maanantai, …
);
Jos määrittelemme muuttujan
päivä x;
Ja haluamme ylikuormittaa operaattorin lauseeseen, niin voimme kirjoittaa kuten alla:
päivä ja operaattori ++ (päivä ja päivä)
(
d = (päivä) (d + 1);
paluu d;
)
Lyhyesti sanottuna tätä voidaan käyttää toimintoparametreissa ja vertailutyypeissä.
Osoittimien käyttämisellä ei ole ennakkoilmoitusta.
päivä * operaattori ++ (päivä * d);
Tätä voidaan käyttää tietorakenteiden ja osoittimen aritmeettisten toimintojen toteuttamiseen.

Johtopäätös - C ++-referenssi vs. osoitin

C ++ -viite vs. osoitinta on vaikea käsitellä, mutta ne parantavat ohjelman tehokkuutta suurelta osin. Molemmilla C ++ Reference vs.osoittimilla on omat käyttötarkoituksensa ja ne palvelevat omia tarkoituksiaan. Voit käyttää osoittimia, kun haluat toteuttaa tietorakenteita ja algoritmeja, kun taas viitteitä, kun haluat käyttää toimintoja ja parametreja palautustyypeillä.

Suositeltava artikkeli

Tämä on opas tärkeimpiin eroihin C ++-referenssin ja osoittimen välillä. Tässä keskustellaan myös C ++ -viite- ja osoittimen avaineroista infografioiden ja vertailutaulukon kanssa. Saatat myös katsoa seuraavia artikkeleita saadaksesi lisätietoja -

  1. Python vs C ++ erot
  2. C vs C ++ Performance - Parhaat erot
  3. MongoDB vs. Cassandra
  4. Mobx vs. Redux
  5. C ++ Vector vs Array: tärkeimmät erot
  6. MongoDB vs DynamoDB: Toiminnot
  7. MongoDB vs SQL: Mitkä ovat toiminnot
  8. C vs C #: Toiminnot