I'll just say it simply.
as you know, *ptr is the value, and ptr is the address.
so if you had an object named bob from your structure
You would use bob like *ptr.
*ptr.name
and
bob.name.
Then when you use the address version of the pointer,
You use the ->.
ptr->name is equivalent to *ptr.name
To reiterate, ptr is the address, and *ptr is the value.