void display(Event* Eptr[50],int(*read_events)(Event , int )) //1. can i do this?;
Да, вы можете.Убедитесь, что объявление завершено правильно.
void display(Event* Eptr[50],int(*read_events)(Event , int ));
int *Fptr = &read_Events;//#2 Is this possible?
Это не правильно.&read_Events
вычисляет указатель на функцию.Вам нужно
int(*Fptr)(Event , int ) = &read_Events;
Вы также можете использовать более простую версию.
int(*Fptr)(Event , int ) = read_Events;
Вы также можете использовать способность компилятора выводить типы и использовать
auto Fptr = &read_Events;
Имеясказал, что мне не ясно, как вы собираетесь использовать указатель fuction.В указанном вами коде нет звонка на display()
.