| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1091 人关注过本帖
标题:一个变量初始化后,该变量在内存中的地址也就确定下来,这句话是什么意思
只看楼主 加入收藏
ggyy66
Rank: 1
等 级:新手上路
帖 子:427
专家分:0
注 册:2007-8-14
结帖率:86.25%
收藏
 问题点数:0 回复次数:8 
一个变量初始化后,该变量在内存中的地址也就确定下来,这句话是什么意思
一个变量初始化后,该变量在内存中的地址也就确定下来,这句话是什么意思
-----------------------------------------------------------------------
书上说,编译时,变量的内存地址就确定了,可是内存是动态分配的呀,为什么说编译时能够确定内存地址,永不变化呢?

书上原话是:
如果在程序中定义了一个变量,在编译时系统就会给这个变量分配内存单元,并根据程序中定义的变量类型,分配一定长度的内存空间.需要注意的是:一个变量初始化后,该变量在内存中的地址也就确定下来,不管以后对该变量如何赋值,在程序运行期间,变量的内存地址总是固定不变的。

我不知如何理解书上的话,
一个变量初始化后,该变量在内存中的地址也就确定下来,这句话是什么意思,下面哪种说法比较靠谱:
1。在编译时,变量在内存中的地址就确定下来了。
2。int a; 时,即定义变量时(此时只是定义,并没有为变量赋值,变量在内存中的地址能固定下来吗?)
3。int a=5; 时,此时变量在内存中的地址被固定下来。
搜索更多相关主题的帖子: 内存 变量 意思 地址 
2008-05-17 00:58
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
收藏
得分:0 
买了房子,房子的位置就定下来了。
至于这个房子住什么人可以变,可房子的地址不会变。
这个房子就是变量。

“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2008-05-17 01:02
ggyy66
Rank: 1
等 级:新手上路
帖 子:427
专家分:0
注 册:2007-8-14
收藏
得分:0 
我想问,单纯的定义变量,但是不赋值,变量地址固定得下来吗?
如:int a;

或者必须定义且给初值,才能固定变量地址:
如:int a=5;

2008-05-17 01:11
Q1007665007
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2008-5-16
收藏
得分:0 
void fun()
{
    int a=0; //这个a,只要这个函数不被调用,地址就不确定
    //或者,不同时刻调用,a的地址也不一定相同
}

QQ1007665007
QQ群61762856
2008-05-17 01:26
ggyy66
Rank: 1
等 级:新手上路
帖 子:427
专家分:0
注 册:2007-8-14
收藏
得分:0 
int a; 时,此时能固定变量在内存中的地址吗?
还是必须:
int a=5;时,即给定一个初值5时,变量地址才固定下来.


请大家明示,就是这两种情况我不明白.
看来,编译时是不会确定内存地址的.

2008-05-17 11:04
ggyy66
Rank: 1
等 级:新手上路
帖 子:427
专家分:0
注 册:2007-8-14
收藏
得分:0 
[bo]以下是引用 [un]Q1007665007[/un] 在 2008-5-17 01:26 的发言:[/bo]

void fun()
{
    int a=0; //这个a,只要这个函数不被调用,地址就不确定
    //或者,不同时刻调用,a的地址也不一定相同
}


void fun()
{
    int a; //此时a没有给初值,当这个函数被调用时,地址能确定下来吗?
}

2008-05-17 11:06
p1s
Rank: 4
等 级:贵宾
威 望:10
帖 子:454
专家分:3
注 册:2005-11-4
收藏
得分:0 
变量存在于四个段中,Heap、Stack、Data和BSS。
对于函数中的变量,未初始化的在BSS段中,初始化的在Stack段中。
动态申请的变量或数组空间在Heap段中。
全局变量在Data段中。
大家看看是不是这样。
2008-05-17 11:48
ggyy66
Rank: 1
等 级:新手上路
帖 子:427
专家分:0
注 册:2007-8-14
收藏
得分:0 
[bo]以下是引用 [un]ggyy66[/un] 在 2008-5-17 11:06 的发言:[/bo]



void fun()
{
    int a; //此时a没有给初值,当这个函数被调用时,地址能确定下来吗?
}


有解吗?

2008-05-18 16:22
sunpy
Rank: 1
来 自:厦门
等 级:新手上路
帖 子:118
专家分:0
注 册:2007-10-1
收藏
得分:0 
int a; 时,即定义变量时变量在内存中的地址会固定,只是值不确定

荀子《劝学》:“不积跬步,无以至千里;不积小流,无以成江海.”
2008-05-19 18:42
  • 9
  • 1/1页
  • 1
快速回复:一个变量初始化后,该变量在内存中的地址也就确定下来,这句话是什么意 ...
数据加载中...
 
   



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

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