When referenced by name,where is the name stored?
===

For example, after we define a variable: 

    int a=2;
we can use "a" as 2 afterwards.  
At the time when I first learned c/c++, I take it for granted.  
But after I have learned the concept of "pointer" and the address of varibles, I am confused.  
If `int* p=&i;` ,where "i" is an int. I know that p have the address of i, so we can use *p to get the value of i. But if we go further, how is "p" accessed? It seemed that p must be referenced by name,right?  
By now, to access a viariable via its address seems more natural to me and easier to understand.  
But now , I'm a confused about the mechanism when using the most simple way to access a varible.  
As in the case of `int a=2;` , where is the name "a" stored?  
Why if we use "a", it is equivalent to the behavior of accessing the memory where the "a" or the "2" is stored?