Ciao Lelle
il problema è che sposti 'punt' in zone indefinite, guarda questo esempio:
int y;
Da qualche parte in memoria viene riservato lo spazio (4 byte) per la variabile y, cosa ci sia prima e dopo questa zona non si sa.
int* punt = &y;
Al puntatore punt assegni l' indirizzo di y, ovvero punt punta alla zona di memoria dove è contenuta y, se fai *punt = 4; scrivi dentro y e fin qui va tutto bene.
punt++;
Sposti il puntatore
oltre la zona di memoria che contiene y, cosa ci sia in questa zona non si sa, per cui se ci scrivi dentro fai dei disastri.