Forskjellen mellom Array og Pointer

Forfatter: Laura McKinney
Opprettelsesdato: 1 April 2021
Oppdater Dato: 6 Kan 2024
Anonim
C++ | Модификаторы Типов | Указатели  Ссылки | 03
Video: C++ | Модификаторы Типов | Указатели Ссылки | 03

Innhold


Det er et nært forhold mellom matrise og peker. Pekeren kan brukes til å få tilgang til arrayelementene, når du får tilgang til hele matrisen ved hjelp av peker aritmetikk, gjør tilgangen raskere. Det er en grunnleggende forskjell mellom en peker og en matrise, det vil si, en matrise er en samling av variabler av lignende datatype, mens pekeren er en variabel som lagrer adressen til en annen variabel. Det er noen andre forskjeller mellom en matrise og en peker som er diskutert nedenfor i sammenligningstabellen.

  1. Sammenligningstabell
  2. Definisjon
  3. Viktige forskjeller
  4. Konklusjon

Sammenligningstabell

Grunnlag for sammenligningArrayPointer
Erklæring// I C ++
type var_name;
// I Java.
type var-navn;
var_name = ny type;
// I C ++
type * var_name;
JobberLagrer verdien av variabelen til homogen datatype.Lagre adressen til en annen variabel av samme datatype som pekervariablene datatype.
GenerasjonDet kan genereres en rekke pekere.En peker til en matrise kan genereres.
Java-støtteStøtt begrepet matrise.Støtter ikke pekere.
OppbevaringEn normal matrise lagrer verdier på variabel og pekeroppstilling lagrer adressen til variabler.Pekere er spesielt designet for å lagre adressen til variabler.
KapasitetEn matrise kan lagre antall elementer, nevnt i størrelsen på matrisevariabel. En pekervariabel kan lagre adressen til bare en variabel av gangen.


Definisjon av Array

En matrise er samlingen av elementene i samme datatype, og alle disse elementene blir henvist til med et vanlig navn, som er navnet på en matrisevariabel. Et bestemt arrayelement kan nås ved å få tilgang til den spesifikke indeksen for den arrayen der det elementet er lagret. Matriser kan være en endimensjonal matrise, en todimensjonal matrise eller flerdimensjonal matrise. En rekke pekere kan også genereres, dvs. en matrise som inneholder alle variabler som pekervariabel. I ‘C ++’ er matriser statisk allokert, mens i ‘Java’ er matriser dynamisk tildelt.

// I C ++ skriver du var_name; // I Java. type var-navn; var_name = ny type;

Her betegner "typen" datatypen til en matrixvariabel, "var_name" betegner navnet som er gitt til arrayvariabelen, "størrelse" angir kapasiteten til matrisevariabel, dvs. hvor mange elementer av "type" kan lagres i den arrayvariabelen . Det er to metoder for å få tilgang til en matrise, først ‘peker aritmetikk’ og andre ‘array indeksering’, hvorav ‘peker aritmetikk’ er raskere.


// tilgang ved hjelp av peker aritmetisk Void display_array (int * S) {while (* s) {cout (<< "value is" << * s); * S ++; }}

Å bruke ‘peker aritmetikk’ ville fungere raskere sammenlignet med ‘matriseindeksering’, dvs. tilgang til arrayvariabelen ved å bruke indeksen. Hvis du trenger å sende en rekke pekere til en funksjon, kan det gjøres ved å bruke den samme metoden som du bruker for å passere en normal matrise, dvs. direkte kalle funksjonen med navnet på matrisen, uten indeks.

La oss forstå det med eksemplet

// Å erklære rekke pekere. int * p;

Her viser det at ‘p’ er en gruppe med heltallstype, den vil inneholde adressen til 10 variabler av heltallstypen. La oss overføre pekarrayen ovenfor til en funksjonsdisplay ().

skjerm (p); // Ring til funksjonsdisplayet. void display (int * d) {// Funksjon som henter pekarrayen. for (int i = 0; i <10; i ++) {cout << ("indeks" <

Denne funksjonen vil vise verdiene, som er tilstede i variablene, hvis adresser er lagret i denne pekeren array i rekkefølge.

Definisjon av Pointer

Pekeren er en variabel som har minneadressen til en annen variabel. Datatypen til begge, pekervariabelen og variabelen hvis adresse blir tilordnet en pekervariabel, må være den samme. Pekeren variabelen er så erklært som følg.

// Erklæring i C ++ type * navn;

Her er ‘type’ en datatype, ‘navn’ er navnet på pekervariabelen. 'Type' definerer hvilken type variabel adresse som kan lagres i pekeren variabelen. For eksempel vil heltallpekeren lagre adressen til heltalvariabelen. Det er to pekeroperatører ‘*’ og ‘&’. Operatøren ‘*’ returnerer verdien som ligger på adressen, som er lagret i variabelen etterfulgt av ‘*’ -tegnet. Operatøren ‘&’ returnerer adressen til variabelen etterfulgt av ‘&’ -tegnet.

// for eksempel int b = 10 int a = & b; // Her lagres adressen til b i variabelen a. // lar adressen til b være 2000, så nå er = 2000. int c = * a; // Her vil heltallpekervariabelen * a returnere verdien som ligger på adressen som er lagret i en .ie. c = 10.

Det er bare to aritmetiske operatører du kan bruke på pekere, dvs. tillegg og subtraksjon. Hvis du bruker økning på en hel tallpekervariabel, vil den bli økt med størrelsen på datatype, dvs. med 2 byte, ettersom det er en heltalepeker, når den trinnvis må peke neste heltalvariabel. Det samme er tilfelle med dekrement.

// p er en heltalers pekeren som har verdi 2000. p ++; // nå p = 2002. p--; // nå inneholder p igjen 2000 som dekrementert av to byte.

  1. En matrise lagrer variablene for lignende datatyper, og datatypene til variablene må samsvare med array-typen. På den annen side lagrer pekervariabelen adressen til en variabel, av en type som ligner på en type pekervariabiltype.
  2. Vi kan generere en rekke pekere, dvs. array hvis variabler er pekervariablene. På den annen side kan vi lage en peker som peker til en matrise.
  3. Java støtter matrise, men det støtter ikke pekere.
  4. En matrisestørrelse bestemmer antall variabler den kan lagre mens; en pekervariabel kan lagre adressen til bare variabelen

Merk:

Java støtter ikke eller unngår pekere strengt tatt.

Konklusjon:

Når vi trenger å jobbe med dataelementer av lignende datatype, kan vi i stedet for å jobbe separat med variabler lage en rekke variabler av lignende datatyper og deretter operere på den. Pekere er nødvendige for noe program, det gir enorm kraft, men dessverre, hvis en peker inneholder en feil verdi, vil det være den vanskeligste feilen å finne.