Rzutujesz zmienną typu *int na int o czym informuje kompilator. Program się nie uruchamia, zgłaszając błąd gdyż możliwa jest utrata precyzji ( te typy mogą mieć różny rozmiar ). Jeżeli chcesz mimo wszystko aby program się uruchomił musisz dodać opcją kompilatora -fpermissive.
Wewnątrz pętli inkrementujesz wskaźnik, przy pomocy którego utworzona została dynamiczna tablica. Następnie za jego pomocą usuwana jest tablica, co prowadzi do UB, gdyż wskaźnik ten już nie wskazuje na jej początek.
Poniżej przykład programu wyświetlającego adresy poszczególnych elementów tablicy.
#include <iostream>
using namespace std;
int main()
{
int ile;
cout << "Ile chcesz liczb w tablicy: ";
cin >> ile;
int *tablica = new int [ile];
for(int i=0; i<ile; i++)
{
cout << &tablica[i] << endl;
}
delete [] tablica;
return 0;
}