? Arrays i programmering er samlinger eller sekvenser av verdiene i en enkelt variabel navn . Disse datastrukturer lar programmerere å representere data serie eller data lister for ulike formål, for eksempel sortering eller gjentakelse . Men i mange programmeringsspråk som C /C + + , arrays programmerere må erklære statisk, uforanderlig rekke størrelser. Ved å bruke minnetildeling teknikker i et språk som C + +, programmerer kan dynamisk lage arrays eller endre størrelsen på disse arrays under kjøring av programmet . Arrays
lavere nivå språk som C eller C + +, arrays er statiske . Gang erklært med en størrelse verdi , vil denne matrisen alltid opprettholde den størrelsen. Kompilatoren tildeler en blokk med sammenhengende minne for matrisen . Eventuelle andre funksjoner eller variabler som må minne vil bli plassert etter tabellen. Følgelig kan matrisen ikke endre i størrelse uten å overskrive data som følger den. Så, for eksempel , når en programmerer erklærer en matrise med tjue plasser , vil denne matrisen alltid har tjue mellomrom , om de er brukt eller ikke , for livet av datastrukturen .
Memory Allocation på den heap
for å omgå denne begrensningen , men kan programmerere allokere minne på haugen. Normalt er variabler og arrayer erklært i et program eller en funksjon plassert på stakken , som i hovedsak representerer korttidsminnet . Når levetiden til funksjon matrisen foreligger på ferdig, blir den matrise slettet. Ved å bruke den "nye " søkeord , derimot, kan programmereren samle minne fra Heap , som er langsiktige minne som eksisterer utenfor funksjonen som erklærer matrisen . Videre kan programmereren bruke Heap å erklære arrays dynamisk.
Dynamic Arrays
p Med arrays , har programmereren å erklære størrelsen på array på erklæring. Denne størrelsen må være representert ved en konstant verdi , enten en kontinuerlig variabel eller et helt tall . Men ved å bruke den "nye" operatør, kan programmereren bruke vanlige variabler til størrelse arrays , og brukeren kan selv angi verdien av disse variablene under kjøring. Følgende eksempel viser forskjellen : en
int main ( ) {
int arr [ 5 ], //new array, må være dimensjonert med konstant valueint size = 5; int * dynamic_array = new int [size ], //størrelsen på matrisen er dynamiske
Endre størrelse arrays
p Med disse dynamiske matriser , kan programmereren deretter opprette arrays som kan endre størrelsen . Den " vector" klassen representerer et dynamisk voksende eller krymper array som taks nytte av dynamiske matriser . Følgende eksempel illustrerer hvordan å lage en enkel matrise som vokser seg større i størrelse : en
int main ( ) {
int * arr = new int [ 5 ]; int new_size = 10 ;
arr [ 0 ] = 1; arr [ 1 ] = 2;
/* resize * /int * arr2 = new int [ new_size ];
arr2 [ 0 ] = arr [ 0 ]; arr2 [ 1 ] = arr [ 1 ];
delete [ ] arr , arr = arr2 ;
return 0 ;}