Skillnaden mellan Pointer and Array

Anonim

Pointer vs Array

En pekare är en datatyp som innehåller en referens till en minnesplats (dvs. en pekervariabel lagrar en adress till en minnesplats där vissa data är lagrade. Arrays är den vanligaste datastrukturen för att lagra en samling element. De flesta programmeringsspråk ger metoder för att enkelt deklarera arrayer och åtkomstelement i arraysna. <

Vad är en pekare?

En pekare är en datatyp som lagrar en adress till en minnesplats där vissa data lagras. Med andra ord har en pekare en hänvisning till en minnesplats. Åtkomst till data lagrad i minnesplatsen som refereras av pekaren kallas dereferencing. När perfo rming repetitiva operationer som traversing träd / strängar, tabelluppslag, etc., med hjälp av pekare skulle förbättra prestanda. Detta beror på att avkodning och kopieringspekare är billigare än att faktiskt kopiera och komma åt data som pekas av pekarna. En nollpekare är en pekare som inte pekar på någonting. I Java skulle åtkomst till en nollpekare generera ett undantag som kallas en NullPointerException.

Vad är en Array?

Visad i figur 1 är ett kodstycke som vanligtvis används för att deklarera och tilldela värden till en array. Figur 2 visar hur en array skulle se ut i minnet.

int värden [5];

värden [0] = 100;

värden [1] = 101;

värden [2] = 102;

värden [3] = 103;

värden [4] = 104;

Figur 1: Kod för att deklarera och tilldela värden till en grupp

100

101 102 103 104 Index: 0
1 2 < 3 4 Figur 2: Array lagrad i minnet Ovanstående kod definierar en array som kan lagra 5 heltal och de nås med hjälp av index 0 till 4. En viktig egenskap hos en array är det, hela matrisen tilldelas som ett enda block av minne och varje element får sitt eget utrymme i matrisen. När en array är definierad, är dess storlek fixerad. Så om du inte är säker på storleken på matrisen vid sammanställningstiden måste du definiera en tillräckligt stor matris för att vara i den säkra sidan. Men de flesta gånger brukar vi använda mindre antal element än vad vi har tilldelat. Så en stor mängd minne är faktiskt bortkastat. Å andra sidan om "tillräckligt stor matris" inte är tillräckligt stor nog skulle programmet krascha.

Vad är skillnaden mellan pekare och arrays?

En pekare är en datatyp som lagrar en adress till en minnesplats där vissa data lagras medan Arrays är den vanligaste datastrukturen för att lagra en samling element. I C-programmeringsspråket görs arrayindexering med hjälp av pekarräkning (dvs e. Elementet i array x skulle motsvara * (x + i)).Därför kan i C, uppsättning pekare som pekar på en uppsättning minnesplatser som är i följd, betraktas som en matris. Vidare är det en skillnad i hur operatörens storlek fungerar på pekare och arrays. När den tillämpas på en array returnerar storleken på operatören hela storleken på matrisen, medan den när den appliceras på en pekare, returnerar bara storleken på pekaren.