|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Sep 2013
Messaggi: 1
|
Dimensione costante array
So per certo che in C++ la dimensione di un array deve essere dichiarata const.
Non trovo scritto da nessuna parte, né sui libri, né su internet, perché è considerato errore, almeno teoricamente parlando, non dichiarare const la dimensione di un array. Esempio: const int n=5; int v[n]; |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Jul 2005
Città: Vicenza
Messaggi: 1570
|
Quote:
Per fare un esempio molto semplice, un array può essere costruito tramite una dimensione costante (dichiarata a compile time): Codice:
int array[5]; Codice:
int dim; cin >> dim; int *array = new int[dim]; |
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jul 2008
Città: Roma
Messaggi: 542
|
Con la costante usi l'allocazione statica dell'array in quanto il compilatore sa in partenza quanto spazio riservare all'array (e per questo la costante, dato che dopo questo spazio non può variare).
Se usi l'allocazione dinamica dell'array con la new, allora potrai indicare a runtime la dimensione di spazio da allocare (nello spazio heap). Tuttavia esiste anche la forma cin >> dimensione; int array[dimensione]; che è un tipo di allocazione dinamica (lo spazio quindi viene indicato a runtime e non con una costante) ma *solo* se il compilatore usato supporta lo standard C99 e si chiama VLA (Variable Lenght Array). Ovviamente se compili un programma che usa i VLA con un compilatore che non supporta lo standard C99 avrai un errore e potrai utilizzare soltanto i primi due tipi di allocazione. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:51.