Skillnaden mellan Array och Pointer

Författare: Laura McKinney
Skapelsedatum: 1 April 2021
Uppdatera Datum: 15 Maj 2024
Anonim
Here’s Why Russia’s SU-35 Flanker Is The Best Dogfighter Ever Made
Video: Here’s Why Russia’s SU-35 Flanker Is The Best Dogfighter Ever Made

Innehåll


Det finns en nära relation mellan matris och pekare. Pekaren kan användas för att få tillgång till arrayelementen, åtkomst till hela matrisen med hjälp av pekare aritmetik gör att åtkomst snabbare. Det finns en grundläggande skillnad mellan en pekare och en matris, det vill säga, en matris är en samling variabler av liknande datatyp medan pekaren är en variabel som lagrar adressen till en annan variabel. Det finns några andra skillnader mellan en matris och en pekare som diskuteras nedan i jämförelsetabellen.

  1. Jämförelsediagram
  2. Definition
  3. Viktiga skillnader
  4. Slutsats

Jämförelsediagram

Grund för jämförelseArrayPekare
Deklaration// I C ++
typ var_name;
// I Java.
typ var-name;
var_name = ny typ;
// I C ++
typ * var_name;
ArbetssättLagrar värdet på variabeln för homogen datatyp.Lagra adressen till en annan variabel av samma datatyp som pekvariablerna datatyp.
GenerationEn rad pekare kan genereras.En pekare till en matris kan genereras.
Java-supportStöd begreppet array.Stödjer inte pekare.
LagringEn normal matris lagrar värden på variabeln och pekarrayen lagrar adressen till variabler.Pekare är speciellt utformade för att lagra adressen till variabler.
KapacitetEn matris kan lagra antalet element, nämnda i storleken på arrayvariabeln. En pekvariabel kan lagra adressen för endast en variabel åt gången.


Definition av Array

En matris är samlingen av elementen i samma datatyp, och alla dessa element hänvisas av ett vanligt namn, vilket är namnet på en matrisvariabel. Ett specifikt arrayelement kan nås genom att få åtkomst till det specifika indexet för den arrayen där det elementet är lagrat. Uppsättningar kan vara en endimensionell matris, en tvådimensionell matris eller multidimensionell matris. En matris med pekare kan också genereras, d.v.s. en matris som innehåller alla variabler som pekvariabel. I 'C ++' fördelas matriserna statiskt medan i 'Java' är matriserna dynamiskt fördelade.

// I C ++ skriv var_name; // I Java. typ var-name; var_name = ny typ;

Här anger "typen" datatypen för en matrisvariabel, "var_name" anger namnet som ges till matrisvariabeln, "storlek" anger kapaciteten för matrisvariabel, dvs. hur många element av "typ" kan lagras i den arrayvariabeln . Det finns två metoder för att få tillgång till en matris, först "pekare aritmetik" och andra "array indexering", varav "pekare aritmetik" är snabbare.


// åtkomst med hjälp av pekar aritmetiska Void display_array (int * S) {medan (* s) {cout (<< "värde är" << * s); * S ++; }}

Att använda "pekar aritmetik" skulle fungera snabbare jämfört med "arrayindexering", dvs åtkomst till arrayvariabel med dess index. Om du behöver överföra en matris med pekare till en funktion kan det göras med samma metod som du använder för att skicka en normal matris, dvs. direkt ringa funktionen med namnet på arrayen, utan något index.

Låt oss förstå det med exemplet

// Förklara utbudet av pekare. int * p;

Här visar det att 'p' är en matris med heltalstyp, den kommer att innehålla adressen till 10 variabel av heltalstyp. Låt oss skicka ovanstående pekarray till en funktionsdisplay ().

display (p); // Ring funktionsdisplayen. void display (int * d) {// Funktion receving av pekaren array. för (int i = 0; i <10; i ++) {cout << ("index" <

Denna funktion visar värdena, som finns i variablerna, vars adresser lagras i denna pekarray i följd.

Definition av Pointer

Pekaren är en variabel som innehåller minnesadressen för en annan variabel. Datatypen för båda, pekvariabeln och variabeln vars adress tilldelas en pekvariabel måste vara densamma. Pekarvariabeln är lika deklarerad som följer.

// Förklaring i C ++ typ * namn;

Här är 'typ' en datatyp, 'namn' är namnet på pekvariabeln. "Typen" definierar vilken typ av variabelns adress som kan lagras i pekvariabeln. Till exempel kommer heltalspekaren att lagra adressen för heltalvariabeln. Det finns två pekaroperatörer '*' och '&'. Operatören '*' returnerar värdet som finns på adressen som lagras i variabeln följt av '*' -tecknet. Operatören "&" returnerar adressen till variabeln följt av "&" -tecknet.

// till exempel int b = 10 int a = & b; // Här lagras adressen till b i variabeln a. // låter adressen till b är 2000, så nu är = 2000. int c = * a; // Här kommer heltalspekersvariabeln * a att returnera värdet som finns på adressen lagrad i en .ie. c = 10.

Det finns bara två aritmetiska operatörer som du kan använda på pekare, dvs tillägg och subtraktion. Om du tillämpar inkrement på en heltalspekersvariabel kommer den att ökas med storleken på datatypen, dvs med 2 byte, eftersom det är en heltalspekare, på inkrement måste den peka på nästa heltalvariabel. Samma sak är fallet med minskning.

// p är ett heltal pekar som innehåller värde 2000. p ++; // nu p = 2002. P--; // nu innehåller p igen 2000 som dekrementeras av två byte.

  1. En matris lagrar variablerna för liknande datatyper och datatyperna för variablerna måste matcha typen av array. Å andra sidan lagrar pekvariabeln adressen till en variabel, av en typ som liknar en typ av pekvariabeltyp.
  2. Vi kan generera en rad pekare, dvs array vars variabler är pekvariablerna. Å andra sidan kan vi skapa en pekare som pekar på en matris.
  3. Java stöder matris, men det stöder inte pekare.
  4. En matrisstorlek avgör antalet variabler den kan lagra medan; en pekvariabel kan lagra adressen till endast variabeln

Notera:

Java stöder inte eller undviker strikt tips.

Slutsats:

När vi måste arbeta med dataelement av liknande datatyp kan vi istället för att arbeta separat på variabler skapa en matris med dessa variabler av liknande datatyper och sedan arbeta med den. Pekare är nödvändiga för något program, det ger en enorm kraft, men tyvärr, om en pekare innehåller ett felaktigt värde, kommer det att vara det svåraste felet att hitta.