? Arrayer i datorprogrammering är samlingar eller sekvenser av värden som finns i en enda variabel namn . Dessa datastrukturer tillåter programmerare att representera dataserier eller data listor för olika ändamål , till exempel sortering eller iteration . Men i många programmeringsspråk , till exempel C /C + + , matriser programmerare måste deklarera statiska , oföränderliga fältstorlekar . Genom att använda tekniker minnesallokering på ett språk som C + + , programmeraren kan dynamiskt skapa arrayer eller ens ändra storlek dessa matriser under programkörning . Arrays
lägre nivå språk som C eller C + + , arrayer är statiska . När deklarerats med en storlek värde , kommer att array upprätthålla alltid den storleken . Kompilatorn allokerar ett block av sammanhängande minne för array . Alla andra funktioner eller variabler som behöver minne placeras efter arrayen. Följaktligen kan matrisen ändras inte i storlek utan att skriva över de data som följer efter den. Så , till exempel , när en programmerare deklarerar en array med tjugo platser kommer att array alltid har tjugo platser , oavsett om de används eller inte , för livet i datastrukturen .
Minnestilldelning på högen
för att kringgå denna begränsning kan dock programmerare allokera minne på högen . Normalt variabler och rader deklarerats i ett program eller en funktion placeras på stacken , som i huvudsak representerar korttidsminnet . När livslängden för funktionen arrayen existerar på klar läggs den arrayen utgå. Genom att använda den " nya " nyckelordet , dock kan programmeraren samlar minnet från högen , vilket är långtidsminnet som existerar utanför funktionen som deklarerar arrayen . Dessutom , kan programmeraren använda Heap att deklarera arrayer dynamiskt .
Dynamiska matriser
med arrayer , har programmeraren att förklara storleken på arrayen vid deklaration . Denna storlek ska företrädas av ett konstant värde , antingen en konstant variabel eller ett heltal . Men med hjälp av " nya " operatör , kan programmeraren använda vanliga variabler som storlek arrayer , och användaren kan även ange värdet av dessa variabler under körning . Följande exempel visar skillnaden :
int main ( ) {
int arr [ 5 ] , //ny array , skall vara dimensionerade med konstant valueint size = 5 ; int * dynamic_array = ny int [ storlek ] ; //storleken på matrisen är dynamiska
Ändra storlek Arrays
dessa dynamiska arrayer , kan programmeraren sedan skapa arrayer som kan ändra storlek . Den " vector " klass representerar ett dynamiskt växande eller krympande array som TAKS nytta av dynamiska matriser . Följande exempel visar hur du skapar en enkel array som växer sig större i storlek :
int main ( ) {
int * arr = new int [ 5 ] ; int new_size = 10 ;
arr [ 0 ] = 1 ; arr [ 1 ] = 2 ;
/* Ändra storlek * /int * arr2 = new int [ new_size ] ;
arr2 [ 0 ] = arr [ 0 ] ; arr2 [ 1 ] = arr [ 1 ] ,
delete [ ] arr , arr = arr2 ;
avkastning 0; }