Well, "Don't sue me" obviously likes c++ because the answer given is laced with c++. You specifically mention C. So it's not entirely helpful, though still reasonably informed.
Why are you declaring ptrmem to be a pointer? (The * tells C it is and you know that given the "struct student *ptr;" definition you later write and properly initialize.) Do you really want a pointer to an integer there? Or just an integer? If just an integer, I'd recommend renaming your variable (the 'ptr' part of it will be sure to confuse) and getting rid of the *. If you really do want a pointer, then why are you wanting to set it to 1??? Do you know what is at address 1, somehow?
Pointers should be set to proper addresses using appropriate syntax to object instances or to NULL or 0. Unless you are doing hardware work on an embedded platform with memory mapped hardware, there is no reason to simply assign a constant value into a pointer (other than 0.)
Is this structure supposed to be part of a linked list of names, so that ptrmem is really supposed to be a pointer to another structure or to NULL? Can you elaborate a little about what the overall goals are?
If you insist on setting a pointer to 1, for reasons beyond me, then simply cast it as (int *) 1 and the warning will likely go away. Still bizarre. But if that's what you want, and you don't want the warning, that's a way to get at it -- though I've worked with compilers that will give you a different warning if you try and do that.