PDA

Visualizza la versione completa : [C++] Array dinamico?


FinalFantasy
24-10-2005, 19:02
Scusate, ma secondo voi, prendendo da input un numero intero qualsiasi, è possibile far così?

float array[n];

n variabile presa come input?

-Yara-
24-10-2005, 21:28
No non puoi..al massimo fai
int *array=new int[n];

FinalFantasy
24-10-2005, 22:14
Originariamente inviato da -Yara-
No non puoi..al massimo fai
int *array=new int[n];

lo pensavo pure io fino a qualche ora fa, ma intanto (con mio GRANDE SGOMENTO), con dev-cpp funziona

Samuele_70
24-10-2005, 22:37
Originariamente inviato da FinalFantasy
lo pensavo pure io fino a qualche ora fa, ma intanto (con mio GRANDE SGOMENTO), con dev-cpp funziona

E' vero il G++ (Gcc) non segnala il classico :
"Constant expression required in function main()"
come invece, giustamente, succede con il Bcc32 !

Anche così non da l'errore:


int a=10;
int b[a];

Addirittura questo funziona senza problemi :


int a;
int b[a];
b[0]=1;
b[1]=2;
b[2]=3;

Strano e bizzarro ... :master: :dottò: :confused: :bhò:

FinalFantasy
24-10-2005, 23:10
mi sa ke ho messo la pulce sull'orecchio a tutti...perché è una cosa stranissima...a questo punto con g++ l'allocazione dinamica con l'operatore new perde di significato, o no?

Samuele_70
25-10-2005, 13:03
Originariamente inviato da FinalFantasy
mi sa ke ho messo la pulce sull'orecchio a tutti...perché è una cosa stranissima...a questo punto con g++ l'allocazione dinamica con l'operatore new perde di significato, o no?

Così sembrerebbe ... :fagiano:
Ma si tratta di progrmmazione 'sporca', non standard e non portabile,
probabilmente anche rischiosa, pericolo di buffer owerflow con
pericolo di sovrascrittura di altri dati adiacenti etc etc.. :confused:

Io lo eviterei insomma ...

Squall1988
25-10-2005, 13:16
credo che il dev allochi automaticamente in modo dinamico in quei casi, ma non ci giurerei e comunque, per il fattore portabilità, eviterei :D

nik600
25-10-2005, 13:28
int a;
int b[a];
b[0]=1;
b[1]=2;
b[2]=3;


è giusto che funzioni, ma il problema è quando cerchi di assegnare un valore a

b[x] quando x è un valore > di a al momento della creazione di b[a]

potresti ottenere un errore di memoria se vai a scrivere su cose che non sono tue, o, ancora peggio, potresti andare a cambiare il valore di alcune altre variabili all'interno del tuo programma

Squall1988
25-10-2005, 14:37
a me non sembra molto giusto che funzioni!

FinalFantasy
25-10-2005, 17:14
Originariamente inviato da Squall1988
a me non sembra molto giusto che funzioni!

l'hai provato? ti dico ke prima ke lo postavo io nessuno ci credeva (compreso io)

Loading