using namespace std;
typedef struct Punto{
int ascissa;
int ordinata;
}punto;
main()
{
int i, dim;
cout<<"inserire a dimensione";
cin>>dim;
int *a;
a=new int[dim];
for(i=0;i<dim;i++)
{
//a[i]=i; metodo di assegnazione più semplice
*(a+i)=i;
}
for(i=0;i<dim;i++)
{
cout<<a[i]<<" ";
}
delete a; //liberiamo la memoria
cout<<endl;
punto*insieme;
insieme= new punto[10];
for(i=0;i<10;i++)
{
insieme[i].ascissa=i; //notazione puntata per raggiungere i singoli campi
insieme[i].ordinata=i+1;
}
for(i=0;i<10;i++)
{
cout<<"ascissa: "<<insieme[i].ascissa<<" ";
cout<<"ordinata: "<<insieme[i].ordinata;
cout<<endl;
}
}
in questo esempio notiamo che la new può essere usata per creare array e array di struct. questo è rso possibile dai puntatori poichè la new crea 10 indirizzi contigui e restituisce al puntatore quello di partenza. Per riempire l' array il compilatore somma all' indirizzo di partenza l' indice( *(a+i)=i ), così si posiziona nell area di memoria da riempire con il valore. lo stesso procedimento viene effettuato per l' array di struct.
Nessun commento:
Posta un commento