Part of your problem is here:
int num=0;
s=new students[num];
you are creating a new array of students that's zero elements long. So every time you advance the pointer you are corrupting memory. You need to allocate as many elements as you are going to use, or use some sort of linked list or vector if you want dynamic allocation.
Also you are adding to num by using num++, which only advances the pointer sizeof(int), which is going to overwrite data in your students array. You need to advance the pointer by sizeof(students), not just num++. You are trying to use num as both an iterator and a counter, which isn't going to work. You need to separate the two, have a count, and a pointer to your current element.