1、变量名是给编译器看的,编译器根据变量是局部还是全局分配内存地址或栈空间,所谓的变量名在内存中不存在,操作时转换成地址数存放在寄存器中了。其实可以理解为是符号表起到了连接作用。

2、符号表 (此段摘抄网上一个课件)

符号表在编译程序工作的过程中需要不断收集、记录和使用源程序中一些语法符号的类型和特征等相关信息。这些信息一般以表格形式存储于系统中。如常数表、变量名表、数组名表、过程名表、标号表等等,统称为符号表。对于符号表组织、构造和管理方法的好坏会直接影响编译系统的运行效率。

在编译过程中需要不断汇集和查证出现在源程序中的各种名字的属性和特征等信息编译器使用符号表来记录名字的作用域以及绑定信息编译程序中符号表用来存放语言程序中出现的有关标识符的属性信息,符号表中的信息在编译的不同阶段都用到在语义分析中,符号表所登记的内容将用于语义检查(如检查一个名字的使用和原先的说明是否一致)和产生中间代码在目标代码生成阶段,当对符号名进行地址分配时,符号表是地址分配的依据。对一个多遍扫描的编译程序,不同遍所用的符号表也往往各有不同。因为每遍所关心的信息各有差异。

符号表的属性:

符号名 
      符号的类型
      符号的存储类别 
      符号的作用域及可视性 
      符号变量的存储分配信息 
      符号的其它属性
      数组内情向量 
     记录结构型的成员信息
     函数及过程的形参

 

符号表的组织结构

第一种: 把属性种类完全相同的那些符号组织在一起,构造出多个符号表常数表、变量名表、过程名表,标号表
 第二种: 把所有语言中的符号都组织在一张符号表中。组成一张包括了所有属性的庞大的符号表

符号表例子:

 

变量名和内存地址及符号表相关推荐

  1. 深入理解C系列:不同类型变量的变量名和内存间的关系

    有了前面两篇的基础,下面正式开扒变量名和内存的关系,先看一段大家很熟悉的代码: int i;scanf_s("%d", &i); int i;,在这一句就为i分配了内存(但 ...

  2. oracle表名使用变量名,oracle 中动态sql语句,表名为变量,怎么解?

    如果你用的是 Oracle 8i 及以上的版本,那简单,在过程中用 execute immediate sql_str 就行, sql_str 是一个拼凑的 SQL 语句,但这个动态语句中带参数,或 ...

  3. PHP--extract 从数组中将变量导入到当前的符号表

    extract (PHP 4, PHP 5) extract - 从数组中将变量导入到当前的符号表 说明 int extract(array $var_array[,int $extract_type ...

  4. 符号表 -(编译原理)

    符号表是一种用于语言翻译器(例如编译器和解释器)中的数据结构.在符号表中,程序源代码中的每个标识符都和它的声明或使用信息绑定在一起,比如其数据类型.作用域以及内存地址. 符号表在编译程序工作的过程中需 ...

  5. 编译原理-符号表管理

    1.符号表的作用 2.符号表中存放的信息 3.符号表的组织结构 4.符号表与作用域 5.总结 一.符号表的作用 1.编译的各个阶段都有可能会用到符号表中登记的信息 1.1协助进行语义检查(检查一个名字 ...

  6. 编译原理(文法、符号表)

    文法 在计算机科学中,文法是编译原理的基础,是描述一门程序设计语言和实现其编译器的方法(文法是用于描述语言的语法结构的形式规则). 1个文法 G 是一个四元组 G = (VN , VT , S, P) ...

  7. 变量名与变量地址的关系:

    1.变量的定义:变量是指以标识符为名字,其值可以改变的量.一个变量代表计算机内存中的某一存储单元,该存储单元中存放的数据就是变量的值,而该存储单元的数据可以改变. 2.变量的意义: (1).变量表示中 ...

  8. c语言变量名、变量和地址的关系

    c语言变量名.变量和地址的关系 定义 变量:用来标识一块内存区域,即变量就是一块内存区域,而这个区域里面的值可以更改,故叫做'变'量 变量名:是一个标识符,用来指代一块内存区域,即变量,变量名并不占用 ...

  9. linux c语言变量地址类型,C语言基础知识:访问内存地址的方法

    汇编语言寄存器间接寻址方法 #define GPJ0CON0xE0200240 ldr r0, =GPJ0CON //把地址值赋给寄存器r0,从后面的=可以看出用的是ldr伪指令,因为需要编译器来判断 ...

最新文章

  1. Python系统的下载与安装教程
  2. 【Android RTMP】x264 图像数据编码 ( NV21 格式中的 YUV 数据排列 | Y 灰度数据拷贝 | U 色彩值数据拷贝 | V 饱和度数据拷贝 | 图像编码操作 )
  3. 喜报丨神策数据荣获“2021 年度金屏奖大屏应用创新奖”
  4. 使左对角线和右对角线上的元素为0
  5. 小学奥数 7647 余数相同问题 python
  6. 图片服务 - thumbor入门
  7. 小程序css之圆角边框
  8. visual studio code无法连接网络,五种方法
  9. C#+ajaxupload实现图片上传
  10. selenium 在pycharm中安装selenium
  11. 如何设计高扩展的在线网页制作平台
  12. leetcode:94. 二叉树的中序遍历
  13. python与SQL学习比较
  14. 中学计算机老师资质,2016下半年教师资格证考试中学信息技术备考指导
  15. Unity Shader入门精要第七章 基础纹理之遮罩纹理
  16. 再读德鲁克#1-信息挑战
  17. 关于CSDN博客域名
  18. VBA工程加密PJ方式(两种)
  19. python terminal模块_python 终端模拟模块 pexpect
  20. AFL查看crash文件

热门文章

  1. mysql relay log时间_如何得到Slave应用relay-log的时间
  2. jq中查找上级_必备实用技能:在EXCEL中制作下拉菜单
  3. linux无线网卡消失,linux下wpa/wpa2的无线网卡设置 [暂时还没有证实是否能用]
  4. eclipse 配置java路径_如何在eclipse的配置文件里指定jdk路径
  5. 转行,转向哪里?电子工程师!!!
  6. 你手上的PCB怎么制作的?几张动图揭晓工厂生产流程
  7. php round half even,PHP round( )用法及代碼示例
  8. 高倍数泡沫装置PHP_找煤机网:BGP高倍数泡沫灭火装置
  9. oracle 转换成csv文件,如何将csv转换为oracle中的表
  10. PHP 怎样理解go指针,关于Go指针的介绍