| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1080 人关注过本帖
标题:新手问个问题,肯请答复
取消只看楼主 加入收藏
frognidie
Rank: 1
等 级:新手上路
帖 子:8
专家分:6
注 册:2013-8-12
收藏
 问题点数:0 回复次数:4 
新手问个问题,肯请答复
int a[5]={1,2,3,4,5};
for( i=0;i<5;i++)
{

printf("aa[%d]=%x\n",i,&a[i]);

}

打印出来的数组的地址不应该是连续的吗??

可是我的打印结果是:
aa[0]=bfaf46b0
aa[1]=bfaf46b4
aa[2]=bfaf46b8
aa[3]=bfaf46bc
aa[4]=bfaf46c0
请问这是为啥? 每个数组的内存地址相差4位,而不是1位。
2013-08-13 11:03
frognidie
Rank: 1
等 级:新手上路
帖 子:8
专家分:6
注 册:2013-8-12
收藏
得分:0 
回复 2楼 TonyDeng
表示int 需要32位来存放

指向int的地址也是32位 4个字节

两个相邻的数组我理解应该是顺序分配的,内存地址应该是连续的,

不知道我的理解是否正确

编译仿真环境是32位的
2013-08-13 11:19
frognidie
Rank: 1
等 级:新手上路
帖 子:8
专家分:6
注 册:2013-8-12
收藏
得分:0 
回复 4楼 TonyDeng
是的,所以感觉很奇怪,不知道啥原因
2013-08-13 11:23
frognidie
Rank: 1
等 级:新手上路
帖 子:8
专家分:6
注 册:2013-8-12
收藏
得分:0 
回复 7楼 TonyDeng
谢谢

比如bfaf46b0,这是32位4个字节,它每次挪动了4,那不相当于只挪动了4个比特,半个字节?
2013-08-13 11:34
frognidie
Rank: 1
等 级:新手上路
帖 子:8
专家分:6
注 册:2013-8-12
收藏
得分:0 
回复 10楼 TonyDeng
非常感谢,我大概明白了

谢谢@!
2013-08-13 14:59
快速回复:新手问个问题,肯请答复
数据加载中...
 
   



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

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