Skillnad mellan pekare och array

Pointer vs Array

En pekare är en datatyp som innehåller en referens till en minnesplats (det vill säga en pekervariabel lagrar en adress till en minnesplats där vissa data lagras). Arrays är den vanligaste datastrukturen för att lagra en samling av 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 innehåller en pekare en hänvisning till en minnesplats. Åtkomst till data lagrad i minnesplatsen som refereras av pekaren kallas dereferencing. När du utför repetitiva operationer som att kryssa träd / strängar, tabelluppslag, etc., använder pekare förbättring av prestandan. 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 array


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 att hela arrayen allokeras 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 Pointers and 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 användning av pekarräkning (dvs ith-elementet i matrisen x skulle vara ekvivalent med * (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, kommer operatorens storlek att returnera hela storleken på matrisen, medan den när den appliceras på en pekare, skulle returnera bara pekarens storlek.