Хм, сигурно отговорът идва късно, но за да не "мигва" програмата ти, обикновенно се пише изходна функция ( когато програмата е по-комплексна ), а за примерчетата от учебник или кратките програмки аз използвах следния трик: преди края на програмата въвеждаш това:
char i;
cin>>i;
Това върши идеална работа, тъй като програмата очаква от теб да въведеш нещо, тоест няма да затвори прозореца докато не напишеш символ ( символи ) и натиснеш enter.
Иначе за грешката, нищо нередно не виждам в сорса ти, но пък аз самият съм имал ужасни главоболия при опит да използвам указатели с Visual C++. Където можех, използвах други методи, пък макар и по-тромави и сложни.