问个C语言符号表的问题

xiaqing01 2013-11-20 03:37:26
一直以来对C变量的如何存储一知半解。例如局部变量放在栈中,全局变量放在数据段中,register放在寄存器中个,这个能理解。

想问的是关于C语言符号表的问题,如 int i=3 是局部变量。那么可不可以这么理解:
i本质上是代表一个地址的,以后的代码中操作i变量的时候,实质上操作的是i代表的地址中的内容,而内存在这个地址中存放的数据是3.那么我想问的是:i本身存放在哪里,难道是不需要存放,但是这个i其实就是个符号,应该也是需要保存的。 另外是不是只有全局变量才有需要保存符号表呢,这个真不理解了。

希望大家给解答下,谢谢。
...全文
461 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
cjfdqchwhj 2013-11-21
  • 打赏
  • 举报
回复
符号名称只是代表地址,楼主说的 i,就是代表一个地址空间。 上面几位说的对,i只是给编译器来用的,方便编程者。你如果接触过反汇编,就很容易明白这个道理。
Adol1111 2013-11-21
  • 打赏
  • 举报
回复
还有,所有的符号都会有自己的符号表,常数表,变量名表,数组名表等等。自己去看下编译原理,上面应该有讲的。
Adol1111 2013-11-21
  • 打赏
  • 举报
回复
变量名只是给内存空间起了一个名字,方便你使用。不要想着存放在哪里,没有意义,除非你是做编译器开发的。 如果你一定要想知道的话,就去看下编译原理吧。编译器会生成一张符号表,符号表有相关的信息,变量名对应的地址什么的。至于这张表存在哪个内存分区我也不太清楚。
lm_whales 2013-11-20
  • 打赏
  • 举报
回复
解释执行,符号表,可能和程序在一起,也可能在解释器内部。 编译执行,符号表只是编译器需要,应用程序,就不需要了。 编译以后,符号表基本上就丢弃了。
AnYidan 2013-11-20
  • 打赏
  • 举报
回复
变量实际上是一段内存,变量名就是内存的名字,只要知道的实际地址,其名字也就没有存在的价值了
Exaybachay 2013-11-20
  • 打赏
  • 举报
回复
i 只是给编译器用的, 制品里头的 i 是作为辅助信息用, 对运行无意义. 都是数据, 有的是数据, 有的是地址.
N_Sev7 2013-11-20
  • 打赏
  • 举报
回复
存储变量的四个区: 常量区:常量存放处 静态区:静态变量,全局变量等存放处 栈区:局部变量等存放区 堆区:申请的内存。
赵4老师 2013-11-20
  • 打赏
  • 举报
回复
VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。 对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。 (Turbo C或Borland C用Turbo Debugger调试,Linux或Unix下用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。) 弄清楚编译期和运行期的区别。 了解一下gcc源代码,嫌大的话换Tiny C Compiler也行。
1) 本套课程针对高校大学生系统学习C语言而录制,从0基础入门讲起,循序渐进,通俗易懂,同时适用于计算机系及非计算机系的同学。通过学习可以帮助大家掌握C语言本质,轻松面对C语言全国二级考试,并达到能独立完成中型C项目、C游戏的水平;2) 多数高校都开设了C语言课程,网上C语言课程也很多,但普遍存在两个问题: (1) 授课方式单一,大多是照着代码念一遍, 对刚刚接触编程的同学来说,感觉晦涩难懂 (2) 授课内容过度注重语法,没有项目实战支撑,造成课程枯燥无趣。本课程针对上述问题进行了改进 (1) 授课方式采用语法讲解+内存布局示意图+项目的方式,让课程生动有趣好理解 (2) 系统全面的讲解了C语言的核心技术点,还配套录制了《全国计算机二级C语言真题精讲》,让学员在掌握C语言编程的同时,还能轻松面对二级考试;3) 课程详细内容: 常量-变量、分支语句、循环语句、操作符和表达式、函数(库函数、自定义函数、递归调用 )、数组(一维数 组、二维数组、数组作为函数参数、指针数组)、指针(指针和指针类型、二级指针和多级指针、指针表达式解析、指针运算、数 组指针、函数指针、回调函数)、调试技巧、程序环境和预处理(翻译环境、运行环境、预定义符号、#define和#undef、宏和函 数、条件编译、文件包含)、 数据在内存中的存储、内存块分配、static、字符函数和字符串函数、自定义类型(结构体、枚举 、联合)、动态内存管理、文件操作(i/o常量、i/o函数、流)。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧