In fact, for dynamic deletion or resizing the pre-sized array/structures etc, data structure would be better idea. That may be a simple linked list, vector, or something like that.
But if your requirement is to have only an array of structures and keep the subscript available but info deleted (ie, reset), then memset() may be helpful to you in that case.
Like, to clear the contents of 36th element (ie, Student[35]), it would look like:
memset(&Student[35], '\0', sizeof(Student));
This would reset the contents in the 36th location of Student structure in memory. Remember, it would be a general reset regardless of the data type stored in it. May not be excellent idea, but it may work for you. Check it out.
And other thing, if the structure object/element has a pointer that has dynamcially allocated memory, then you must deallocate that pointer item first and then reset the memory contents of it. Otherwise, it would be a memory leak (if address is lost then it can not be located/recovered any more).