c++中“指针名字”是“标识符”仍是“地址”

c++中“指针名字”是“标识符”还是“地址”?
c++中“指针名字”是“标识符”还是“地址”?
1.假如说,c++中“指针名字”是“标识符”,所以,“指针名字”在编译的时候,存储在“符号表”之中,这种说法对吗?
2.假如说,c++中“指针名字”是“地址”,所以,“指针名字”直接对应内存中的地址。
------解决思路----------------------
标识符是编译原理的概念,
编译器自然就继承下来了
地址这个是编译后的概念,
编译前,代码里都是一些文字(C,C++代码是文本文件)
编译后,每个变量 对应一个地址,
而指针变量的内容,也就是一个地址。
你可能没初始化,那么这个数据编译器安排初始化,
或者加载程序后,也可能是运行中,
该指针变量位置,会有某些残留数据,
这个数据是不确定的
这个残留数据,此时就是,没初始化的变量的值,指针也不例外,
这时候,指针的值,就是一个不确定的地址(这是野指针的一种情况)。
------解决思路----------------------
标识符是词法和语法分析阶段,对一些符号的称呼,
这些标识符通常是关键字,函数名,类型名,变量名。

一个程序里,通常会有标识符,整数常量,浮点常量,字符常量,运算符,分隔符,
以及空白符号(空格,回车,制表符等,只有分割作用的符号)这些分类

------解决思路----------------------
指针的名字和普通的变量名字并没有什么不同

所有的变量名在编译的时候对编译器来说都是标识符
全局变量在运行的时候就是一个固定的地址
局部变量在运行的时候是一个 ebp + offset  这样一个相对于堆栈的位置,每次运行到的时候随 ebp 不同会有不同的地址
------解决思路----------------------
通过vs2010 反汇编,
int *p ,
p = (int *)&i;
p是4字节内存,编译器直接转成地址了,如[ebp-40h]

lea         eax,[ebp-34h]  
mov         dword ptr [ebp-40h],eax  

该4字节内容指向一个地址(地址内数据为一个int)