Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy

Ako môžeme dynamicky prideliť Array veľkosť ?

Pole v oblasti programovania sú kolekcie alebo sekvencie hodnôt obsiahnutých v jedinom názov premennej . Tieto dátové štruktúry umožňujú programátorom predstavuje dátový rad alebo zoznamy dát pre rôzne účely , ako je triedenie alebo iterácii . Avšak , v mnohých programovacích jazykoch , ako je C /C + + , pole programátori musia deklarovať statické , nemenné veľkosti poľa . Pri použití metódy prideľovanie pamäte v jazyku , ako je C + + , môže programátor dynamicky vytvárať pole alebo dokonca zmeniť veľkosť týchto polí pri realizácii programu . Pole

nižšej úrovne jazykov , ako je C alebo C + + , polia sú statické . Raz vyhlásil s hodnotou veľkosti, bude , že rad vždy tvrdí , že veľkosť . Kompilátor alokuje blok súvislej pamäte pre pole . Akékoľvek ďalšie funkcie alebo premenné , ktoré potrebujú pamäť bude umiestnený po poli . V dôsledku toho môže poľa nemení veľkosť bez prepísanie dát , ktorá ho nasleduje . Tak, napríklad , raz programátor deklaruje pole s dvadsiatimi miest , ktoré polia budú mať vždy dvadsať státie , či sú používané alebo nie , pre život dátové štruktúry .
Prideľovanie pamäte na heap

Aby sa toto obmedzenie obísť , ale programátori môžu alokovať pamäť na halde . Za normálnych okolností , premenné a polia deklarované v programe alebo funkcie sú umiestnené v zásobníku , čo v podstate predstavuje krátkodobú pamäť . Po celú dobu trvania funkcie poľa existuje na povrchové úpravy , pole je odstránený . Pomocou " novej " kľúčové slovo , však, programátor môže zhromažďovať pamäť z haldy , ktorá je dlhodobá pamäť , ktorá existuje mimo funkciu , ktorá deklaruje pole . Okrem toho môže programátor použiť haldy deklarovať pole dynamicky .
Dynamické pole

s poľami , programátor musí deklarovať veľkosť poľa na vyhlásenie . Táto veľkosť musí byť zastúpené na konštantnú hodnotu , a to buď konštantný premenné alebo číslo . Avšak, použitie " nové " operátor , programátor môže používať bežné premenné veľkosti polí a používateľ môže dokonca zadať hodnotu týchto premenných pri behu . Nasledujúci príklad ukazuje rozdiel :

int main ( ) { int

arr [ 5 ] ; //nové pole , musí byť dimenzované s konštantnou veľkosťou valueint = 5 ; int * dynamic_array = new int [ size ] ; //veľkosť poľa je dynamická
Zmena veľkosti poľa

týchto dynamických polí , programátor môže vytvoriť pole , ktoré môže byť zväčšená . " Vektor " trieda predstavuje dynamicky sa rozširujúcej alebo zmenšuje pole , ktoré Taks Výhodou dynamických polí . Nasledujúci príklad ukazuje , ako vytvoriť jednoduchý pole , ktoré rastie väčšie vo veľkosti :

int main ( ) {

int * arr = new int [ 5 ] ; int new_size = 10 ;

arr [ 0 ] = 1 ; arr [ 1 ] = 2 ;

/* Zmena veľkosti * /int * Arr2 = new int [ new_size ] ;

Arr2 [ 0 ] = arr [ 0 ] ; Arr2 [ 1 ] = arr [ 1 ] ;

delete [ ] arr ; arr = Arr2 ;

return 0 ; }


Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené