non ha molto senso quello che hai scritto....
1 perchè scrivi EOF??? come fai a inserire EOF da console (almeno io NON riesco...)
invece di EOF metti '\n' //invio e prima del ciclo while scrivi anche fflush(stdin)...così azzera lo stream di input.

2 perchè vuoi stampare a video (char) p[4]????????????????? non hai mai esplicitamente assegnato niente a p[4]! piuttosto stampa p senza il cast a char cout << p;

3 ultimo consiglio, nell while metti while ( (c[i]=getchar()) != '\n' ) con le parentesi pr evitare di confonderti con le regole di precedenza associatività



codice a posto:

[CODE]
#include <iostream>
#define MAXCHAR 80
using namespace std;
char* funzione_inutile(int x,int y);
main(){
int x;
int y;
char* p;
cout << "Inserisci due numeri\n\n";
cin >> x >> y;
p=funzione_inutile(x,y);
cout << "\n\n" << p <<"\n\n";
system("pause");
return 0;
}

char* funzione_inutile(int x,int y){
static char c[MAXCHAR];
int i;
i=0;
cout << "\n\nx+y= " << x+y << "\n\n Adessi inserisci un carattere\n\n\n";
fflush(stdin);
while((c[i]=getchar()) != '\n')
{
i++;
}
c[i]='\0';
return c;
}

[