//arraydinamici.cpp
//illustra uso array dinamici

#include <iostream.h>


void Stampa(int v[], int n)
//void Stampa(int*const v, int n)  possibile alternative sia per
//void Stampa(int* v, int n)       array statici che dinamici
{
  for(int i=0; i<n; i++)
    cout << v[i] << ' ';
  cout << endl;
}

void main()
{
  int n; //nota n non e' una costante!
  n = 10;

  int* a; // punt ad intero
  a = new int[n]; //alloca array di dim n su heap e
                  //restituisce indirizzo elem iniziale al punt a

  //tratto array dinamici esattamente come array statici
  for (int i=0; i<n; i++)
    a[i] = 100;  // cioe' *(a+i) = 100!

  Stampa(a,n);

  delete[] a; //dealloca l'intero array puntato da a

  n = n*2;
  a = new int[n]; //ora a e' un array dinamico di 20 elementi
  for (int i=0; i<n; i++)
    a[i] = 100;
  Stampa(a,n);
  delete[] a;
}

