|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Nov 2003
Città: Pordenone - Tarvisio
Messaggi: 2451
|
[C]dimensione Array dinamica
Ciao a tutti..
Come si fa a fare un array del quale non so a priori la dimensione? Ho cercato un po' e ho trovato che bisogna usare la funzione malloc(). Ma non ho capito molto bene come funziona...e non ho capito se dichiarare un array cosi: Codice:
int array[5]; Codice:
int *array; Inoltre non riesco a capire il seguente programma: Codice:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int allocaz,alloc_lenght,*array,i,temp;
printf("Quanto deve essere grande l'array?");
scanf("%d",&alloc_lenght);
array=(int *)malloc(sizeof(int)*alloc_lenght);
allocaz=sizeof(int)*alloc_lenght;
//carico l'array
for(i=0;i<alloc_lenght;i++)
array[i]=rand()%10;
temp=i;
//visualizzo l'array
for(i=0;i<alloc_lenght;i++)
printf("%d",array[i]);
printf("Grandezza array: ");
printf("%d",temp);
//libero la memoria
free(array);
getchar();
}
Grazie
__________________
Me? The Chosen One? They chose me, and i didn't even graduate from fuckin' high school Wind FTTE Vula 100/20 - Stats Retelit / Valcanale 20Mbit/2Mbit // Wind 100/20+Wind4G con EdgerouterX |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Sep 2002
Città: Celano (AQ) Segno_Zodiacale: Leone Ascendente: Cammello Segni_Particolari: Quello
Messaggi: 9571
|
se dichiari un array in questo modo:
int array[5]; dai all'array una dimensione statica, che è 5, e non può essere cambiata in momenti successivi. per dichiarare un array con dimensione variabile devi dichiarare un puntatore ad intero (o a qualsiasi altro tipo) e poi fare la malloc: int *array; array= (int *) malloc (DIM*sizeof(int)); in questo modo array punta ad un'area di memoria che può contenere DIM elemento di tipo int (sizeof(int)). il valore restituito dalla malloc è un puntatore a void (void*) per cui viene castato a puntatore ad intero. penso che con questa piccola spiegazione dovresti anche capire cosa fa il programma che hai postato. |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Nov 2003
Città: Pordenone - Tarvisio
Messaggi: 2451
|
Quote:
Codice:
allocaz=sizeof(int)*alloc_lenght;
__________________
Me? The Chosen One? They chose me, and i didn't even graduate from fuckin' high school Wind FTTE Vula 100/20 - Stats Retelit / Valcanale 20Mbit/2Mbit // Wind 100/20+Wind4G con EdgerouterX Ultima modifica di -Yara- : 25-02-2005 alle 21:46. |
|
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Sep 2002
Città: Celano (AQ) Segno_Zodiacale: Leone Ascendente: Cammello Segni_Particolari: Quello
Messaggi: 9571
|
Quote:
|
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Nov 2003
Città: Pordenone - Tarvisio
Messaggi: 2451
|
Quote:
Grazie ancora
__________________
Me? The Chosen One? They chose me, and i didn't even graduate from fuckin' high school Wind FTTE Vula 100/20 - Stats Retelit / Valcanale 20Mbit/2Mbit // Wind 100/20+Wind4G con EdgerouterX |
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Mar 2004
Messaggi: 1451
|
Quote:
__________________
Ciao ~ZeRO sTrEsS~ |
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Sep 2002
Città: Celano (AQ) Segno_Zodiacale: Leone Ascendente: Cammello Segni_Particolari: Quello
Messaggi: 9571
|
Quote:
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:54.



















