Newsgroup: it.comp.lang.c
Titolo: Array dinamici

E' sufficiente una dichiarazione del tipo :
char *array[];
e un'allocazione
for(i=0;i<n;i++)
array[i]="qualcosa";
per avere un array allocato dinamicamente?
E le funzione di allocazione memoria (malloc o calloc)centraon qualcosa?
Grazie

Non penso proprio che basta fare cosě.....
char *array[];
ti ricordi il proramma che abbiamo fatto ?
--
-----------------------------------------------------------
E-Mail    : 
nic...@nsoft.it
URL       : 
http://www.geocities.com/blues_nick/
ICQ       : 26032113
-----------------------------------------------------------

Non credo proprio. Un array dinamico e' un array gestito a runtime: puo'
aumentare e diminuire di lunghezza, un po' come avviene in Perl e VB. puoi
simularlo con una lista, derivandone una classe in cui poi ridefinisci
type operator[](int pos)
void operator[](int pos, type t)
per le operazioni dell'array.
--
____ __         __,_      __  _____
\  _\_ \  ___ _/ / /\  /\/  \/ / _/ It is better to reign in Hell
 \  _ \ \/ _ '/ , |\ VV / / / / _/ Than serve in Heaven.- MILTON
  \_,_/\_\_,_/_/|_| \__/\__/_/_/
      -- the one and only --     e-mail : 
blak...@tiscalinet.it
                                ICQ    : 59394345
The UNIX Guru's View of Sex:
$unzip;strip;touch;finger;mount;fsck;more;yes;umount;sleep

 E le funzione di allocazione memoria (malloc o calloc)centraon qualcosa?
Certo che c'entrano. Ti consiglio di leggere il Kernighan e Ritchie - Il
linguaggio C - Seconda edizione.
EMG

mi sono scordato: non confoderli con gli array allocati dinamicamente.
e ho anche sbagliato linguaggio: in C non puoi derivare da una lista...
<:-(


 il suo puntatore.
Si č solo dimenticato il numero di elementi tra le parentesi quadre.
L'array in se č infatti allocato staticamente o automaticamente (a
seconda di dove si trova la definizione) e non necessita quindi di
allocazione dinamica.
EMG

allocazione dinamica.
Hai ragione. :-) Pensavo ad un eventuale realloc().
Saluti,
    Mardy

 allocazione dinamica.
E se la dimensione tra [ ] non e' nota a priori?

array = malloc(sizeof(char*) * n);
Se si riferisce a questo, ignorate pure il messaggio precedente! :)
Grazie comunque,
                                            Gioele

 Hai ragione. :-) Pensavo ad un eventuale realloc().
Forse ti sei ancora espresso male ma non si puň fare la realloc() di un
array statico o automatico.
EMG

E le funzione di allocazione memoria (malloc o calloc)centraon qualcosa?
Purtroppo si'. :-) Nell'istruzione
array[i] = "qualcosa";
tu allochi implicitamente la memoria necessaria per contenere la stringa
"qualcosa", ma non ti curi di controllare che nell'array ci sia spazio per
il suo puntatore.
Infatti "array" e' un array di puntatori a stringa; anche se le stringhe
sono allocate correttamente, devi allocare nell'array lo spazio per i
relativi puntatori; prima del ciclo for, dunque:
array = malloc(sizeof(char*) * n);
e poi dovresti essere a posto.
Saluti,
    Mardy

 E se la dimensione tra [ ] non e' nota a priori?
Allora si deve utilizzare un array allocato dinamicamente che si
gestisce attraverso un puntatore.
EMG

array statico o automatico.
Beh, certo: era in riferimento a quanto gli avevo risposto io. :-)
Saluti,
    Mardy

gestisce attraverso un puntatore.
Ecco ecco!! Era quello che pensavo io! :-)
Saluti,
    Mardy