标题:变量内存问题
只看楼主
wolf_55555
Rank: 2
等 级:论坛游民
威 望:1
帖 子:10
专家分:33
注 册:2019-6-14
结帖率:0
已结贴  问题点数:20 回复次数:5 
变量内存问题
菜鸟求教
例如int型,分配内存32位,这32位内存只储存变量值吗?
变量的名字会存在哪里?
搜索更多相关主题的帖子: 变量 内存 分配 名字 存在 
2019-08-12 10:57
wufuzhang
Rank: 9Rank: 9Rank: 9
来 自:广州
等 级:贵宾
威 望:21
帖 子:206
专家分:1346
注 册:2017-8-9
得分:5 
代码要经过预处理,编译,链接生成机器可以执行的指令(这个过程实际上可能会更复杂):
在这过程中,所有的变量都被替换成他们所对应的内存地址,
运行程序时,在内存中的程序代码区(存放代码的地方),
直接操作变量的内存地址,根本不需要变量名。
变量名只是给程序员看的。

不经历千百遍的调试,怎能体会成功时那一刹那的喜悦。
2019-08-12 11:21
zbjzbj
Rank: 12Rank: 12Rank: 12
来 自:郑州
等 级:贵宾
威 望:52
帖 子:620
专家分:3020
注 册:2011-4-22
得分:5 
完全编译以后,变量名是不保留的,所有的变量名都编译成变量1,变量2,变量3,。。。对于每个变量,计算机会百分之百找到他的对应内存地址。
计算机比人记性好,不需要用一些特定意义的符号来记忆变量,他不觉得枯燥无味,艰涩难懂。
计算机比人笨的是,你必须告诉他这个变量是整形、实型等数据类型,他不会自己识别。
比如他不知道这个变量代表的是人,不能撕两半,如果你不告诉他是整形数据,他就会装傻。
你一旦指定这个变量是整形,那他就会在指定变量地址的以后四个字节中寻找这个数值。这就是计算机编程必须考虑字节的原因之一。
变量名存在哪?符号表里或者叫其他表吧,记不清楚了。
如果愿意深究,用十六进制编辑器,打开exe文件,看一下exe文件结构,数据存储方式等等会弄清楚的。
至于本人,清楚过,现在又不清楚了,所以只能抛个砖头。
2019-08-12 18:17
hoodlum1980
Rank: 2
来 自:浙江大学
等 级:论坛游民
威 望:2
帖 子:289
专家分:23
注 册:2008-2-24
得分:5 
这个要根据你的变量的声明进行区分。
全局变量和函数内声明的 static 变量:放在同一个可读可写的 segment。
函数内声明的临时变量:放在当前线程的栈上。访问时形如: [esp / ebp + xxx] 的形式。
因此,int 变量的名字在编译后是不存在的。只能说他的存储位置/地址。

my tech blog: /hoodlum1980
2019-08-15 15:42
你们都要疼我哦
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:火星
等 级:贵宾
威 望:49
帖 子:1296
专家分:2746
注 册:2008-7-13
得分:5 
以前清楚过  现在全不清楚了

小妹,哥哥看你骨骼清奇,绝非凡人,将来必成大业,不如这样,你先把裤裤脱了,待哥哥为你开启灵窍,然后我们一起努力钻研如何
2019-08-16 20:16
wolf_55555
Rank: 2
等 级:论坛游民
威 望:1
帖 子:10
专家分:33
注 册:2019-6-14
得分:0 
谢谢大家的解答,随着学习的深入,也会了解的越来越清楚!
2019-09-21 10:08



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-496341-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.212940 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved