27/07/11 19:24
Pitagora
Postato originariamente da comina8:
Ci sarebbe però anche questo metodo:
const int i;
scanf("%d",&i);
int array[i];
Si esatto, però in C, BUONA NORMA AFFERMA che, tutte le dichiarazioni vanno poste all'inizio della funzione.
P.S. una variabile di tipo const deve essere dichiarata nella stessa riga della dichiarazione.
const int i = 4; // ok
const int i; // male
i = 4; // male
Ultima modifica effettuata da Pitagora 27/07/11 19:29
aaa
27/07/11 23:04
pierotofy
Ok ho fatto un po' di ricerca e credo che ci sia qualcosa da chiarire.
Gli array a lunghezza variabile sono una features "nuova" del C, introdotta solamente dallo standard C99.
Questa feature permette di usare codice del tipo:
int i;
scanf("%d",&i);
int array[i];
Lo spazio non si sa dove viene allocato, a volte sullo stack, a volte sull'heap, ma dipende dall'implementazione. GNU C Compiler utilizza lo stack (quello usato da dev-c++). Visual Studio non supporta lo standard C99, quindi non è nemmeno possibile usarlo.
en.wikipedia.org/wiki/…
In linea definitiva, per andare sul sicuro, l'uso di calloc e malloc è sempre quello più consigliato.
Ultima modifica effettuata da pierotofy 28/07/11 5:51
28/07/11 8:59
drewnik99
Vi ringrazio per le numerose risposte. Adesso ho risolto questo problema, ma potete consigliarmi qualche buon compilatore che supporti C99?
Ultima modifica effettuata da drewnik99 28/07/11 9:09
aaa