【问题标题】:Are there array's identifiers in symbol table?符号表中是否有数组的标识符?
【发布时间】:2021-05-03 15:17:22
【问题描述】:

我知道符号表中有变量名和函数名,但是数组呢?符号表中有数组吗?

【问题讨论】:

  • 数组不是变量吗?
  • 我不相信标准 c++ 提到任何关于符号表的内容。您可能想提及您的编译器。
  • 数组不是一组变量。
  • 数组是连续空间中 N 个对象的集合。这并不意味着它本身不能是一个变量。
  • “目标文件中的符号表取决于你的编译器。”你使用哪个编译器?

标签: compilation linker


【解决方案1】:

数组可以只是一个常规变量:如果您将数组声明为任何函数定义之外的全局变量(或静态变量),例如:

int myArray[256]; 

那么是的,全局变量的名称在符号表中,就像任何全局变量一样。

如果你在函数中声明它:

int myFunction(void) {
    int myArray[256];
    ...
}

然后,它在当前线程的堆栈上保留空间,并将其视为局部变量。

在 C 中,数组只是保留空间的第一个元素的常量地址,最多可以包含 N 个相同类型的元素。

【讨论】:

  • “数组是一个变量。” 吹毛求疵:不一定。你也可以有未命名的临时数组。
  • 编辑了我的答案以考虑您的评论。谢谢
猜你喜欢
  • 2012-02-07
  • 1970-01-01
  • 1970-01-01
  • 2015-01-15
  • 1970-01-01
  • 1970-01-01
  • 2021-03-03
  • 1970-01-01
  • 2011-04-11
相关资源
最近更新 更多