C语言中的标识符存储在哪里

只是感兴趣。 我正在修改我长期被遗忘的生锈的C知识,我想知道在哪里存储声明变量的标识符?

例如,如果我在main中声明以下char值1。

int main(){ char value1 = 'A'; return 0; } 

我知道char将被存储在堆栈框架中的堆栈中。 让我们说如果我们在value1上做了一个关于这个和value1的地址。 我们会得到像0xF37012(一个假设的数字)。 这将是值所在的位置,但标识符呢? 这与0xF37012有什么关联? 是否在主要的某个地方的堆栈frane? 或者所有标识符都存储在某个全局表或列表中?

除非您专门为调试编译,否则不会存储标识符。 如果在编译时设置了debuggability选项,则会有与function/堆栈帧/静态存储相关联的符号表,这些符号表提供这些映射。

除非生成调试信息,否则将在编译时优化某些标识符。