Atšķirība starp rādītāju un atsauci

Galvenā atšķirība - rādītājs vs atsauce
 

Pirms diskutējam par atšķirību starp rādītāju un atsauci, vispirms īsi apskatīsim šo divu terminu nozīmi. Programmā dati aizņem atmiņu. Lai tiem piekļūtu, ir jāzina precīza atmiņas vieta, kurā dati tika ievietoti izpildes laikā. Rādītāja mainīgie un atsauces mainīgie tiek izmantoti, lai piekļūtu šiem datiem un manipulētu ar atmiņu adresēm, kurās tie atrodas. Tas ir, gan norādes, gan atsauces var izmantot, lai netieši atsauktos uz objektiem. Viņiem būtībā ir atmiņas adreses. galvenā atšķirība starp rādītāju un atsauci ir tas rādītājs ir mainīgais lielums, kurā tiek saglabāta cita mainīgā atmiņas vietas adrese kamēr a atsauce ir mainīgais, kas attiecas uz citu mainīgo. Divi mehānismi, rādītājs un atsaucei ir atšķirīga sintakse un lietojums.

Kas ir rādītājs?

Rādītājs ir programmēšanas valodas objekts, kas saglabā vērtības atmiņas adresi skaitļošanas atmiņā.

C ++ sintaksē;

int i = 5;

int * ptr = & i;

Pirmā rinda definē mainīgo, kas inicializēts ar vērtību 5. Otrā rinda norāda rādītāju uz mainīgā atmiņas adresi. Šeit “ptr” tiek deklarēts kā “pointer to int” tipa objekts, kura sākotnējā vērtība ir objekta i adrese. Būtībā ptr mainīgais norāda uz i, saglabājot tā atmiņas adresi.

Tiek izsaukta atmiņas vietā saglabātās vērtības iegūšana atsaukšana. Operators * tiek izmantots, lai novirzītu rādītāju. Pēc deklarāciju veikšanas netiešā izteiksme * ptr novirzes ptr, lai atsauktos uz i.

Lai mainītu i vērtību, var izmantot šādu piešķīrumu;

* ptr = 20;

Rādītājus var pārdalīt, lai tie attiektos arī uz dažādiem objektiem.

A nulles rādītājs ir īpaša veida rādītājs. Nulles rādītāju bieži apzīmē ar nulli vai nulli un norāda uz neko. Laba prakse ir izmantot nulles rādītāju, ja nav precīzas rādītājam piešķiramas adreses. Šo uzdevumu var izmantot loģiskās operācijās un apstākļos.

Norādes var būt izmanto, lai saglabātu un pārvaldītu dinamiski iedalītās atmiņas adreses. Datu struktūru, piemēram, skursteņu, rindu un sarakstu, ieviešanu un kontroli var padarīt efektīvu, izmantojot norādes. Piemēram, rindai var būt divi rādītāji; galvas rādītājs un astes rādītājs. Rādītājus var izmantot arī, lai mainīgos nodotu pēc adreses, kas ļautu mainīt vērtību. Tieši manipulējot ar atmiņu vai ar atmiņu kartētām ierīcēm var rīkoties arī, izmantojot norādes.

Norādes ļauj gan aizsargātajai, gan neaizsargātajai piekļuvei adresētajai atmiņai. Tāpēc jāveic nepieciešamie piesardzības pasākumi, lai pārbaudītu, vai rādītāja saturs ir derīgs. Pretējā gadījumā, atsaucot atsauci uz rādītāju ar nederīgu atmiņas adresi, programma var izraisīt avāriju.

Norādes tiek atbalstītas tādās valodās kā C, C ++, Pascal un daudzās montāžas valodās.

Rādītājs a norādot uz atmiņas adresi, kas saistīta ar mainīgo b.

Kas ir atsauce?

Atsauce ir vienkārši alternatīvs identifikators vērtībai, kas saglabāta atmiņā. Tas programmai ļauj netieši piekļūt noteiktam atsauces punktam.

C ++ sintaksē;

int i = 5;

int & ref = i;

Pirmā rinda definē mainīgo, kas inicializēts ar vērtību 5. Otrā rinda deklarē “ref” kā tipa objektu “reference to int”, kas attiecas uz i. Atsauce atšķiras no pašiem datiem, ņemot vērā, ka atsauce tiek ieviesta kā atmiņā saglabātā konkrētā atsauces punkta fiziskā adrese.

Pēc definīcijas atsaucei nevar piešķirt jaunu vērtību. Atsauce vienmēr attiecas uz objektu, ar kuru tā tiek inicializēta. Nākamajā uzdevumā ref joprojām attiecas uz i, bet tagad vērtība ir 20.

ref = 20;

Saskaņā ar iepriekš minēto piemēru atsaukšanas atsaukumiem nav nepieciešami nekādi operatori.

Atsauces var izmantot, ja mainīgais vienmēr attiecas uz objektu. Tas ir tāpēc, ka atšķirībā no norādēm atsauces nevar būt nulles, un tās vienmēr jāpiešķir inicializācijas laikā. Tā kā atsaucēm vienmēr jāatsaucas uz kādu objektu, padarot šādu mainīgo par atsauci, tiek nodrošināta programmas efektīva un pareiza darbība. Tā kā nav nulles norāžu, atsauces mainīgā lieluma derīgums nav jāpārbauda.

Atsauces mainīgie var būt izmanto, lai efektīvi nodotu lielus datus kā argumentus procedūrām. Atsauces tiek izmantotas arī lielu datu apmaiņai starp dažādiem koda apgabaliem, jo ​​katrs kods satur atsauci uz datiem.

Programmēšanas valodas, piemēram, C ++, Java, Python, Perl, PHP, Ruby uc, atbalsta atsauces.

Kāda ir atšķirība starp rādītāju un atsauci?

Rādītāja un atsauces definīcija

Rādītājs: Rādītājs ir objekta atmiņas adrese, kas saglabāta skaitļošanas atmiņā.

Atsauce: Atsauce ir objekta alternatīvs identifikators vai aizstājvārds.

Rādītāja un atsauces raksturojums

Deklarācija

Rādītājs: Rādītājs tiek deklarēts ar * operatoru.

Atsauce: Atsauce tiek deklarēta ar operatoru.

Deferenču pārtraukšana

Rādītājs: Rādītāja mainīgajam lielumam nepieciešama * operatora atsaukšana.

Atsauce: Atsauces mainīgais neprasa operatora atsaukšanu.

Inicializēšana

Rādītājs:  Rādītājus var inicializēt līdz nullei. Šādus mainīgos sauc par nulles rādītājiem.

Atsauce: Atsauces nevar inicializēt līdz nullei. Nav tādas lietas kā nulles atsauce. Atsaucei vienmēr jāatsaucas uz objektu.

Pārcelšana

Rādītājs: Rādītāja mainīgo var pārdalīt, lai atsauktos uz dažādiem objektiem.

Atsauce: Atsauces mainīgo nevar no jauna piešķirt. Tas vienmēr attiecas uz objektu, ar kuru tas tika inicializēts.

Lietošana

Rādītājs: Rādītāja mainīgie ir jāizmanto, ja nav iespējas atsaukties uz neko vai ja ir nepieciešams atsaukties uz dažādām lietām dažādos laikos..

Atsauce: Atsauces mainīgie jāizmanto gadījumos, kad vienmēr būs kāds objekts, uz kuru jāatsaucas, un kad atsauces mainīgais nav nepieciešams izmantot, lai atsauktos uz kaut ko citu, izņemot šo objektu.

Lietojuma pielietojums

Rādītājs: Rādītāju mainīgos var izmantot algoritmu un datu struktūru ieviešanai.

Atsauce: Atsauces mainīgos var izmantot funkciju parametros, un atgriešanās veidi nosaka noderīgas saskarnes.

Lietotās valodas:

Rādītājs: Programmēšanas valodas, piemēram, C, C ++, Pascal un daudzas montāžas valodas, atbalsta norādes.

Atsauce: Programmēšanas valodas, piemēram, C ++, Java, Python, Perl, PHP, Ruby uc, atbalsta atsauces.

Attēla pieklājība: “Norādījumus” izveidoja šis fails: SvenTranslation.Own work.Šis vektora attēls tika izveidots ar Inkscape. (CC BY-SA 3.0), izmantojot Commons -