Cerca nel blog

martedì 14 ottobre 2014

Puntatori: array e struct

#include<iostream>
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