Pointers in C can often be difficult to understand—I certainly had a learning curve and am continuing to learn. However, I had a thought that may help some by comparing a common experience and wanted to share.
A pointer in C behaves just like a word in any spoken language which refers to a physical object or multiple objects and the uniqueness of each object (e.g Skippy the dog, Mittens and Tiger the cats, fork number 5). The word itself does not contain the physical object and its uniqueness but only communicates the existence of the physical object and its uniqueness. The pointer itself does not contain the physical address and its value but only communicates the existence of the physical address and its value.
Just because we don’t have to consciously think about where data is stored in our brains doesn’t mean that our brains don’t have a memory address system. How often do you have to consciously maintain your heart beat, calculate the orientation of your body, or identify that the two objects in front of you are similar enough to be a set of objects—two dogs. You don’t. They are unconscious/automatic functions.