Anbefalet, 2023

Redaktørens Valg

Forskel mellem peger og reference

"Pointer" og "Reference" begge bruges til at pege eller henvise til en anden variabel. Men den grundlæggende forskel blandt dem begge er, at en pegervariabel peger på en variabel, hvis hukommelsesplacering er gemt i den. Referencevariablen er et alias for en variabel, der er tildelt den. Sammenligningsdiagrammet nedenfor undersøger de øvrige forskelle mellem en pointer og en reference.

Sammenligningstabel

Grundlag for sammenligningPointerReference
GrundlæggendePegeren er hukommelsesadressen til en variabel.Henvisningen er et alias for en variabel.
Vender tilbagePegervariabelen returnerer værdien placeret ved den adresse, der er gemt i pegervariabelen, som foregår af pegerskiltet '*'.Referencevariablen returnerer adressen på variablen forud for referencetegnet '&'.
Operatører*, ->&
Null ReferenceMarkørvariablen kan henvise til NULL.Referencevariablen kan aldrig referere til NULL.
InitialiseringEn uninitialiseret pointer kan oprettes.En uninitialiseret reference kan aldrig oprettes.
Tidspunkt for initialiseringMarkørvariablen kan initialiseres på et hvilket som helst tidspunkt i programmet.Referencevariablen kan kun initialiseres på tidspunktet for oprettelsen.
geninitialiseringMarkørvariablen kan genoptages så mange gange som nødvendigt.Referencevariablen kan aldrig genoptages igen i programmet.

Definition af peger

En "peger" er en variabel, der holder hukommelsesstedet for en anden variabel. Operatørerne, der bruges af markørvariablen, er * og ->. Erklæringen af ​​pegervariabel indeholder basisdatatypen efterfulgt af '*' -tegnet og variablenavnet.

 skriv * var_navn; 

Lad os forstå pegeren ved hjælp af et eksempel.

 int a = 4; int * ptr = & a; cout < 

Her har vi en heltalvariabel a og en pointervariabel ptr, som gemmer adressen til variabel a.

Pointer Arithmetic

Pointervariablen kan betjenes med to aritmetiske operatører, der er "addition" og "subtraction". Tilføjelsen henvist til som "increment", og subtraktionen henvises til som "decrement". Når en pegervariabel øges, peger den på hukommelsesstedet for den næste variabel af dens basistype. Når en pegervariabel er formindsket, peger den på hukommelsesstedet for den tidligere variabel af dens basistype. Derfor kan en array effektivt nås af en pointervariabel.

Flere indirection

En peger peger på den anden pegervariabel, som peger på målværdien. Denne type peger initialiseres altid med adressen til en anden pegervariabel. Deklarationen af ​​en peger til en peger er som følger.

 skriv ** var_navn; 

Lad os studere det med et eksempel.

 int a = 4; int * ptr1 = & a; int ** ptr2 = & ptr1; cout < 

Funktionspeger

Som vi ved, at en funktion ikke er en variabel, har den stadig en hukommelsesplacering, der kan tildeles en pointervariabel. Når en peger peger på en funktion, kan funktionen kaldes med den funktionspeger.

De vigtige punkter at huske om markøren.

  • Markørvariablen kan oprettes uden initialisering, og den kan initialiseres hvor som helst i programmet.
  • Markørvariablen kan genoptages til en anden variabel.
  • Markørvariablen kan henvise til NULL.

Definition af Reference

Referencevariablen bruges til at henvise til variablen, der er tildelt den referencevariabel. Operatøren, der benyttes af referencevariablen, er '&'. Erklæringen af ​​en referencevariabel indeholder basistype efterfulgt af '&' tegn og derefter variabelt navn.

 type & refer_var_name = var_ navn; 

Her er typen datatypen, & operatøren bekræfter, at det er en referencevariabel. Refer_var_name er navnet på referencevariablen. Varnavnet er navnet på variablen, som vi vil have referencevariablen til at henvise til.

Lad os forstå referencervariablen ved hjælp af et eksempel.

 int a = 4; int & b = a; // b henviser til ab = 6; // nu a = 6 

Her er variablen af ​​type int tildelt en værdi 4. Referencevariablen er tildelt variablen a, dvs. b er alias af a. Nu, når vi tildeler en anden værdi til b, ændrer vi værdien af ​​a. Det kan derfor siges, at de ændringer, der er foretaget til en referencevariabel, også vil forekomme i variabel henvist af denne referencevariabel.

Det vigtigste punkt er, at referencevariablen skal initialiseres på tidspunktet for dens oprettelse. Når referencevariablen initialiseres med en variabel, kan den ikke genoptages til at henvise til en anden variabel. I det øjeblik du tildeler en værdi til en referencevariabel, tildeler du denne værdi til en variabel, som en referencevariabel peger på. Referencevariablen kan aldrig referere til NULL. Aritmetik kan ikke udføres på en referencevariabel.

Referencevariablen kan anvendes på tre måder:

  • Som funktionens returværdi.
  • Som en funktion parameter.
  • Som en selvstændig reference.

Nøgleforskelle mellem pointer og reference

  1. Reference er som at oprette et andet navn for at henvise en variabel, så det kan refereres til med forskellige navne. På den anden side er en pointer blot en hukommelsesadresse til en variabel.
  2. En pegervariabel, hvis den foregår med '*', returnerer værdien af ​​en variabel, hvis adresse er gemt i pegervaren. En referencevariabel, når den foregår med '&', returnerer adressen til denne variabel.
  3. Markøroperatører er * og -> mens referencetjenesten er &.
  4. En pointervariabel, hvis den ikke har nogen variables adresse, peger den på null. På den anden side kan en referencevariabel aldrig referere til Null.
  5. Du kan altid oprette en enhedspegervariabel, men vi opretter en reference, når vi har brug for et alias for en variabel, så du aldrig kan oprette en enhedsnummer.
  6. Du kan genoptage en peger, men når du først initialiserer stævnen, kan du ikke genoptage den igen.
  7. Du kan oprette en tom pointer og initialisere den til enhver tid, men du skal først initialisere refrence, når du opretter en reference.

Bemærk:

Java understøtter ikke peger.

Konklusion

Pegeren og referencen begge bruges til at pege eller henvise til en anden variabel. Men begge er forskellige i deres brug og implementering.

Top