Cesaruz (Normal User)
Pro
Messaggi: 83
Iscritto: 25/10/2007
|
Ciao a tutti...ho iniziato a vedere i vettori dinamici in C...
Purtroppo però sul manualetto che ho è spiegato male e forse troppo brevemente...
Mi parla della malloc e della calloc per l'allocazione della memoria ma poi non mi spiega come gestire questo spazio... come ad esempio caricare un vettore di interi o altro...
Quindi come funzionano i vettori dinamici???
Grazie anticipatamentea tutti
|
|
theprogrammer (Normal User)
Guru^2
Messaggi: 2509
Iscritto: 28/01/2009
|
La cosa migliore e' comprare un buon libro di base al posto del manualetto.
L'uso completo dei vettori dinamici in C non e' una cosa che si possa mettere in una singola risposta in un forum.
Un forum non si dovrebbe sostituire ai libri ma servire solamente per aggirare ostacoli circoscritti e ben definiti (IMHO)
|
|
HeDo (Founder Member)
Guru^2
Messaggi: 2765
Iscritto: 21/09/2007
|
eh come ha ben detto the programmer non è un argomento da poco.
Il mio consiglio è andarti a comprare un manuale come si deve, fidati che è un buon investimento. Se vuoi iniziare dal web vatti a vedere le reference di malloc calloc e free, sicuramente ci sono degli esempi di base sui quali puoi farti un'idea.
|
|
pierotofy (Admin)
Guru^2
Messaggi: 6230
Iscritto: 04/12/2003
|
|
|
Cesaruz (Normal User)
Pro
Messaggi: 83
Iscritto: 25/10/2007
|
Ok avete ragione tutti...
Ora vedo se reisco ad acquistarne uno...
Grazie.
|
|
oretovalley (Normal User)
Pro
Messaggi: 109
Iscritto: 12/04/2009
|
ciao, cmq per quanto riguarda i vettori dinamici in C per allocare un vettore dinamicamente basta fare semplicemente:
nome_variabile_da_allocare_dinamicamente = (tipo*)malloc(grandezza_da_allocare*sizeof(tipo));
ovviamente l'allocazione viene fatta in questo modo a priori in ogni caso se ti interessa
aumentare la grandezza del vettore dovresti usare la realloc
Ultima modifica effettuata da oretovalley il 12/04/2009 alle 20:38 |
|
theprogrammer (Normal User)
Guru^2
Messaggi: 2509
Iscritto: 28/01/2009
|
Postato originariamente da oretovalley:
nome_variabile_da_allocare_dinamicamente = (tipo*)malloc(grandezza_da_allocare*sizeof(tipo)); |
Ti volevo solamente correggere sul primo termine
nome_variabile_da_allocare_dinamicamente
in quanto non e' la variabile che allochi dinamicamente, ma uno spazio di memoria che e' puntato da quella variabile. Dovrebbe quindi essere
puntatore_allo_spazio_da_allocare_dinamicamente = |
|
oretovalley (Normal User)
Pro
Messaggi: 109
Iscritto: 12/04/2009
|
si hai pienamente ragione è stata un errore mio anche perchè nella dichiarazione della variabile si mette tipo *variabile o tipo variabile[]... a mio avviso l'* rende meglio l'idea che lavoriamo con puntatori , grazie mille della correzione
|
|
Dave Danuve (Normal User)
Newbie
Messaggi: 6
Iscritto: 13/04/2009
|
Vorrei precisare, se mi permettete, che il casting del puntatore restituito da malloc non è necessario, questo perché in C quando si fa l'assegnazione tra puntatori di tipo diverso viene tutto convertito nel tipo dell'operando che sta a sinistra. Ad esempio, il codice:
Codice sorgente - presumibilmente C/C++ |
int variable = 5;
void *voidPtr = &variable;
int *intPtr = voidPtr;
printf("Il valore di variable è %d", *intPtr);
|
È corretto. In C++ invece no :\, non chiedetemi perché ma non ne ho idea, però il C ha paradossalmente sempre avuto automatismi interessanti .
|
|