Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Array a lunghezza variabile
Forum - C/C++ - Array a lunghezza variabile - Pagina 3

Pagine: [ 1 2 3 ] Precedente | Prossimo
Avatar
arack95 (Member)
Pro


Messaggi: 144
Iscritto: 15/11/2010

Segnala al moderatore
Postato alle 14:38
Giovedì, 28/07/2011
Testo quotato

Postato originariamente da 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:

Codice sorgente - presumibilmente C/C++

  1. int i;
  2. scanf("%d",&i);
  3. 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. http://en.wikipedia.org/wiki/C99#Implementations

In linea definitiva, per andare sul sicuro, l'uso di calloc e malloc è sempre quello più consigliato.




L'ho appena notato pure io, sono rimasto sconvolto :om:

PM Quote
Avatar
drewnik99 (Normal User)
Pro


Messaggi: 69
Iscritto: 28/03/2008

Segnala al moderatore
Postato alle 16:04
Giovedì, 28/07/2011
Che compilatore mi consigliate di usare per utilizzare a pieno le funzionalità del C99?

PM Quote
Avatar
arack95 (Member)
Pro


Messaggi: 144
Iscritto: 15/11/2010

Segnala al moderatore
Postato alle 17:09
Giovedì, 28/07/2011
http://en.wikipedia.org/wiki/C99#Implementations
Qua ci sono i compilatori con il supporto al C99, potresti provare a vedere quelli con il supporto pieno

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6388
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 8:40
Lunedì, 01/08/2011
Questa caratteristica del linguaggio (come altre dello standard C99) si chiama

VLA - Variable Length Arrays

e viene supportata praticamente da tutti i compilatori *tranne* dal Visual C di Microsoft.

La Microsoft ha più volte dichiarato nel passato di non volere supportare lo standard C99 ma penso che, prima o poi, lo farà.

Il discorso è complesso, perché molte caratteristiche del C99 *non* sono state implementate nello standard del C++ e questo crea un bel po' di confusione.

Il fatto che sia una caratteristica molto usata dipende dal fatto che tanti di quelli che iniziano usano il DevC++ che utilizza la versione Windows di gcc (il mingw), il quale supporta il C99.

Chi ha sempre usato il Visual C si trova "spaesato" (come probabilmente arack...)


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Pagine: [ 1 2 3 ] Precedente | Prossimo