? Arrays i edb-programmering er samlinger eller sekvenser af værdierne i en enkelt variabel navn. Disse datastrukturer tillade programmører at repræsentere dataseriers eller data lister til en række forskellige formål , såsom sortering eller iteration . Men i mange programmeringssprog , såsom C /C + +, arrays programmører skal erklære statiske , uforanderlige array- størrelser. Ved at bruge hukommelse tildeling teknikker på et sprog som C + +, programmøren kan dynamisk oprette arrays eller endda ændre størrelsen disse arrays under udførelsen af programmet . Arrays
lavere niveau sprog som C eller C + +, arrays er statiske . Erklærede engang med en størrelse værdi , vil denne matrix altid bevare denne størrelse. Compileren tildeler en blok af kontinuerlig hukommelse til matrixen . Alle andre funktioner eller variabler , der skal minde vil blive placeret efter array. Følgelig kan arrayet ikke ændres i størrelse uden at overskrive de data, der følger det . Så for eksempel , når en programmør erklærer et array med tyve pladser , vil denne matrix altid har tyve pladser , uanset om de bruges eller ej, for livet af datastruktur.
Memory Allocation på den heap
for at omgå denne begrænsning , dog kan programmører allokere hukommelse på den bunke . Normalt er variabler og arrays erklæret i et program eller en funktion placeret på stakken , som i det væsentlige repræsenterer korttidshukommelsen . Når levetiden af funktionen array eksisterer på finish, array slettet. Ved at bruge den "nye " søgeord , dog kan programmøren indsamle hukommelsen fra Heap , som er langtidshukommelse , der eksisterer uden for funktionen , der erklærer array. Desuden kan programmøren bruge Heap at erklære arrays dynamisk.
Dynamisk Arrays
Med arrays , programmøren har at erklære størrelsen af array på erklæring. Denne størrelse skal repræsenteres af en konstant værdi , enten som en konstant variabel eller et heltal. Men ved hjælp af den "nye " operatør , kan programmøren bruge regulære variable til størrelse arrays , og brugeren kan endda indtaste værdien af disse variabler under kørslen . Følgende eksempel viser forskellen : Hej
int main () {
int arr [5 ] //nyt array, skal være dimensioneret med konstant valueint size = 5; int * dynamic_array = new int [size ] //størrelsen af array er dynamiske
Resizing arrays
disse dynamiske arrays , kan programmøren derefter oprette arrays, der kan skaleres . Den " vektor" klasse repræsenterer en dynamisk ekspanderende eller skrumpende array, Taks fordel af dynamiske arrays. Følgende eksempel illustrerer , hvordan du opretter en simpel array, der vokser sig større i størrelse : Hej
int main () {
int * arr = new int [ 5] int new_size = 10; < br >
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 ,
tilbagevenden 0 ;}
< br >