Pekare vs Array
En pekare är en datatyp som innehåller en referens till en minnesplats (dvs. en pekvariabel lagrar en adress till en minnesplats där en del data lagras). Arrays är den vanligaste datastrukturen för att lagra en samling element. De flesta programmeringsspråk tillhandahåller metoder för att enkelt deklarera matriser och komma åt element i matriserna.
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 referens till en minnesplats. Åtkomst till data lagrad på minnesplatsen som refereras av pekaren kallas dereferencing. När du utför repetitiva operationer som att korsa träd / strängar, tabelluppslagningar etc., skulle du använda pekare förbättra prestandan. Detta beror på att referenser och kopiering av pekare är billigare än att kopiera och få åtkomst till de uppgifter som pekarna pekar på. En nollpekare är en pekare som inte pekar på någonting. I Java skulle åtkomst till en nullpekare generera ett undantag som kallas NullPointerException.
Vad är en matris?
Visad i figur 1 är en kod som vanligtvis används för att deklarera och tilldela värden till en matris. Figur 2 visar hur en matris skulle se ut i minnet.
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 matris
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 minnesblock och varje element får sitt eget utrymme i arrayen. När en matris har definierats är dess storlek fixad. Så om du inte är säker på storleken på matrisen vid sammanställningstid, måste du definiera en tillräckligt stor matris för att vara på den säkra sidan. Men oftast kommer vi faktiskt att använda mindre antal element än vi har tilldelat. Så en stor mängd minne slösas faktiskt bort. Å andra sidan om "tillräckligt stor matris" inte är tillräckligt stor skulle programmet krascha.
Vad är skillnaden mellan pekare och matriser?
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åk görs matrisindexering med hjälp av pekare-aritmetik (dvs. att ith-elementet i matrisen x skulle motsvara * (x + i)). Därför kan man i C betrakta en uppsättning pekare som pekar på en uppsättning minnesplatser som följer i följd som en matris. Vidare finns det en skillnad i hur storleken på operatören fungerar på pekare och matriser. När den tillämpas på en matris kommer operatörens storlek att returnera hela storleken på matrisen, medan den tillämpas på en pekare, skulle den bara returnera pekarens storlek.