Allora ti conviene prima darti una studiatina ai puntatori (studiarli per bene, perchè non è un argomenti dei più semplici).
Comunque, per ottenere la dinamicità negli array si deve ricorrere ai puntatori, ovvero a delle particolari variabili che contengono indirizzi di memoria. L'indirizzo di memoria di un puntatore, lo dice il nome stesso, corrisponde ad una cella di memoria che contiene (o è atta a contenere) un valore. Questa cella di memoria viene detta "puntata" dalla variabile puntatore. Un array altro non è che un puntatore immutabile ad una porzione di memoria: una memoria limitata alla quantità descritta quando lo dichiari.
Senza dilungarmi troppo sull'argomento (che richiederebbe troppo tempo), per ottenere un array dinamico devi conoscere queste cose:
1) l'utilizzo della funzione malloc() (o una delle sue derivate (calloc(), ecc...);
2) la quantità di spazio richiesta per il tipo di dato che intendi inserire nell'array;
3) l'aritmetica dei puntatori.
Vediamo come si fa ad allocare, dinamicamente, un array di interi quando il numero dei suoi elementi viene preso in input da tastiera:
Come vedi la dimensione dell'array la chiedo all'utente e in base al valore che lui mi passa, io creo l'array.codice:int main() { int *mioArray; // Sarà il mio array int quantiElementi; // Lo chiedo all'utente int i; // Indice per scorrere l'array printf("Quanti elementi deve avere l'array? "); scanf("%d", &quantiElementi); // Alloco il mio array: mioArray = (int *) malloc(quantiElementi * sizeof(int)); // Lo riempio: for(i=0; i<quantiElementi; i++) mioArray[i] = i; // Lo stampo a video: printf("\n\n"); for(i=0; i<quantiElementi; i++) printf("%d ", mioArray[i]); printf("\n\n"); return 0; }
Ciao.![]()



Rispondi quotando