社区
其它技术问题
帖子详情
变量名是否占用内存空间。
playmud
2005-01-12 09:31:02
迷惑!!!!!!!!
...全文
475
4
打赏
收藏
变量名是否占用内存空间。
迷惑!!!!!!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
suyouxin
2005-01-12
打赏
举报
回复
变量名?
应该占用空间
void test(void)
{
int i;
char* p;
..........
}
楼主是这个意思吧,i在调用test函数的时候会被压栈占用sizeof(int)的栈空间,
p也会压栈占用一个指针一样大小的栈空间。
在函数退出的时候销毁
gentlelover
2005-01-12
打赏
举报
回复
答案虽然是我提供但非我整理,楼主的精神值得我学习!
也感谢楼主!
SammyLan
2005-01-12
打赏
举报
回复
精辟,顶一下
gentlelover
2005-01-12
打赏
举报
回复
1
变量:用来标识(identify)一块内存区域,这块区域的值一般是可以更改的,这就是它“变”的由来,但是我们可以通过使用如const等一些修饰符号来限定这一内存区域的操作特性(characteristic),即变量的操作特性。用const修饰的使变量不能更改的就和常量一样的变量叫做常变量。
变量名:是一个标识符(identifier),用来指代一块内存区域,即变量,使用变量使我们操作内存以区域(area),以块(block)为单位,提高了方便性。
你的机器代码中,是不会出现变量名的;变量名是给我们程序员操作内存来使用的。
想想在汇编年代,没有变量名,我们操作内存,都是用地址来直接操作的,还要控制区域大小;当然汇编语言已经有了简单的变量。
对于编译器,它会搜集我们的变量名,比如我们定义了一个全局的int a;那么编译器都为我们做了什么呢?
它会为程序预留4个字节的空间(假设在32位平台),并把我们的变量名“a”保存进符号表,并用这个符号表的索引对应实际的空间。
如果下面出现b = a;那么它就会根据符号表找到变量的真正的物理位置,取得它的值,赋给b。
这是写编译器需要做的,我们需要建立符号表。
但是实际在汇编层次上,操作的都是地址而已,不存在任何名称了。
让你不再害怕指针
深入理解指针,很详细,如有错误请高手指点 PDF文件格式下载:http://download.csdn.net/source/454542
变量名
是否
占用
内存空间
?
变量:用来标识(identify)一块内存区域,这块区域的值一般是可以更改的,这就是它“变”的由来,但是我们可以通过使用如const等一些修饰符号来限定这一内存区域的操作特性(characteristic),即变量的操作特性。用const修饰的使变量不能更改的就和常量一样的变量叫做常变量。
变量名
:是一个标识符(identifier),用来指代一块内存区域,即变量,使用变量使我们操作内存以区域(
变量名
是否
占用
内存
想看结论的直接拖到最后今天在网上看见这么一张图,里边有这么一句话不是很理解为什么这样会浪费
内存空间
呢,我花了三个小时在网上查了些资料,整理了一下,具体如下:
变量名
编译后,变成一个内存地址这个内存地址一般是直接存在于代码段中那么什么是代码段呢?一般把程序所占的主存空间分为(从低到高):1.代码段2.数据段3.栈4.堆其中,代码段和数据段是编译期间就确定的所以在整个程序编译期间,都
占用
内存空间
程序又分...
C++变量的引用
是否
占用
内存空间
引用实际上是
占用
内存空间
的,但程序把它按照不
占用
内存空间
来处理。
c/c++关于引用变量
是否
占用
内存空间
。
我的结论:引用不
占用
内存空间
。 C++Primer(5版)一书中指出: 定义引用时,程序把引用和它的初始值绑定(bind)在一起,而不是将初始值拷贝给引用。一旦初始化完成,引用将和它的初始值对象一直绑定在一起。 因为引用本身不是一个对象,所以不能定义引用的引用。 书中指明引用只是变量的一个别名,且引用本身并不是一个对象。而且在实际编译运行操作中,打印引用的地址结果与变量的地址一样,故我认为引用并不
占用
内存空间
。 ...
其它技术问题
3,882
社区成员
9,045
社区内容
发帖
与我相关
我的任务
其它技术问题
C/C++ 其它技术问题
复制链接
扫一扫
分享
社区描述
C/C++ 其它技术问题
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章