Creazione di un normale array 2D
La seguente dichiarazione, crea un normale array 2D:
String arr2d [] [5] = "aa", "ab", "ac", "ad", "ae",Se questo array viene creato nell'ambito globale, non può essere utilizzato (E.G. riassegnato un valore dell'elemento) nell'ambito globale. Tuttavia, può avere uno qualsiasi dei suoi elementi riassegnati a un valore negli altri ambiti.
Per eliminare questo array, lascialo andare fuori dalla portata. Se fosse stato creato in un ambito diverso dall'ambito globale, sarebbe uscito dalla portata alla fine del suo blocco (). Se fosse stato creato nell'ambito globale, sarebbe passato solo dall'ambito alla fine del programma.
Array 2D di negozio gratuito
La seguente dichiarazione mostra come l'array sopra ma con un nome puntatore diverso può essere creato dinamicamente nel negozio gratuito:
String (*ptr2d) [5] = new String [5] [5] "aa", "ab", "ac", "ad", "ae",Nota come è stato creato l'array 2D con il nuovo operatore. Il nome dell'array, è ptr2d.
Se questo array viene creato nell'ambito globale, non può essere utilizzato (E.G. riassegnato un valore dell'elemento) nell'ambito globale. Tuttavia, può avere uno qualsiasi dei suoi elementi, ha riassegnato un valore negli altri ambiti.
Per eliminare questo array, utilizzare l'operatore Elimina [], come mostrato di seguito. L'array nel negozio gratuito non può essere davvero eliminato lasciandolo uscire dall'ambito. Deve essere eliminato con l'operatore Elimina [], nel suo ambito, al fine di liberare la memoria.
Contenuto dell'articolo
- Introduzione - Vedi sopra
- Eliminazione di un array ordinario 2D
- Eliminazione di un puntatore 2D creato dinamicamente di negozio gratuito
- Conclusione
Eliminazione di un array ordinario 2D
Un array ordinario bidimensionale viene eliminato semplicemente lasciandolo uscire dall'ambito. Il seguente programma lo illustra con un ambito nidificato:
#includereL'output è, BB. Il costrutto if ha un blocco che è l'ambito nidificato. L'array smette di esistere alla fine del blocco. C'è un indicatore di commenti, appena sotto il blocco, nel programma. Se viene rimosso, il programma non si compilerà e verrà emesso un messaggio di errore. Ciò risulta dal fatto che l'array 2D è morto alla fine del blocco.
Nel seguente programma, l'array 2D ordinario dichiarato nel corpo della funzione, muore alla fine del blocco della funzione:
#includereL'output è ancora, BB. C'è un indicatore di commenti appena sotto il blocco funzione nel programma. Se viene rimosso, il programma non si compilerà e verrà emesso un messaggio di errore. Ciò risulta dal fatto che l'array 2D è morto alla fine del blocco. Ricordiamo inoltre che, l'assegnazione di un valore a un elemento 2D, dopo la dichiarazione, non è consentita nell'ambito globale.
Eliminazione di un puntatore 2D creato dinamicamente di negozio gratuito
L'assegnazione dopo la dichiarazione non è consentita nell'ambito globale. Quindi, è conveniente avere una dichiarazione di array 2D, in un ambito nidificato, nella funzione principale C ++, per motivi pedagogici.
Un array bidimensionale, dichiarato nella forma sopra, viene eliminato con la sintassi, "Elimina [] 2Darray". Questa cancellazione deve avvenire nel suo ambito per liberare la memoria ed evitare la perdita di memoria. Il seguente programma lo illustra, con un ambito nidificato:
#includereL'output è, AA, da PTR2D [0] [0]. Dopo la cancellazione, ptr2d [0] [0] non restituisce nulla. Sebbene gli altri elementi come PTR2D [1] [1] restituirebbero comunque un valore, l'array è considerato eliminato.
2D Array Store gratuito come puntatore a pointer
Un array 2D può essere creato come puntatore a pointer. In questo caso, tutte le righe dovranno essere eliminate prima che l'array unidimensionale rimanga, viene eliminato. Il seguente programma lo illustra nella funzione principale C ++:
#includereL'output è BB prima di eliminare. Dopo l'eliminazione, il valore di ritorno da PTR2D [1] [1] non è nulla.
Ora, questo array 2D di puntatore in negozio gratuito è un array monodimensionale puntatore, di array di punta. Quindi, al fine di eliminare l'array 2D in negozio gratuito, tutte le righe devono essere eliminate per prime con elimina [] prima che l'array di punta unidimensionale principale venga eliminato. Questo utilizza lo schema operatore ELETE [] per un array 2D in negozio gratuito.
Inclusione della biblioteca
Il nuovo operatore e eliminazione, sono effettivamente definiti nella libreria. Tuttavia, inclusa questa libreria è facoltativa.
Conclusione
Per eliminare un array ordinario 2D, lascialo andare fuori dalla portata. Se l'array 2D è in negozio gratuito, deve essere eliminato con l'operatore Elimina [] per la memoria libera nell'ambito in cui è dichiarato. Se l'array 2D in Store gratuito fosse stato creato con una sintassi convenzionale, allora un semplice "Elimina [] 2DarrayName" farebbe per la cancellazione. Se è stato creato come puntatore a pointer, le righe dovranno essere eliminate prima con "Elimina [] 2DarrayName [i]" e quindi l'array 1D rimanente (senza elementi), essere eliminati con "Elimina [] 2DarrayName ".