E' una delle differenze che esistono tra il C++ e il C: quest'ultimo effettua le conversioni di tipo in modo automatico, cosi il risultato della malloc, che è un void* viene implicitamente convertito nel tipo della variabile p che è un struct point*. Le soluzioni sono due:
1 - attenerti alle regole del c++ e fare il cast esplicitamente:
p = (struct point *)malloc(sizeof(struct point));
che comuqnue è codice C valido, oppure
2 - fare in modo che devc++ compili il file come un file C non C++; prova a salvare il file dandogli estensione .c al posto di .cpp