鱼C论坛

 找回密码
 立即注册
查看: 1967|回复: 5

[已解决]C语言求助

[复制链接]
发表于 2016-7-1 11:26:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
# include <stdio.h>



int main()
{
        int b[6] = {1,2,3,8,9,10};


        int i;
        for (i = 0; i < 6; ++i)
       
    printf("%o\n", &b[i]);
       
        return 0;
}



在在VC++6.0的输出结果是:
4577550
4577554
4577560
4577564
4577570
4577574
Press any key to continue


为什么输出地址不是连续相等的变化呢? 每个地址能存多少个字节?
最佳答案
2016-7-1 14:09:49
因为每一个int变量占四个字节,而一个地址值表示一个字节,那么数组的每一个元素的地址值差为4。
因为你的输出是%o,为八进制输出,所以0+4=4,4+4就进位了,末位为0 。
你可以改变下输出为十进制,这样就更好理解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-7-1 14:09:49 | 显示全部楼层    本楼为最佳答案   
因为每一个int变量占四个字节,而一个地址值表示一个字节,那么数组的每一个元素的地址值差为4。
因为你的输出是%o,为八进制输出,所以0+4=4,4+4就进位了,末位为0 。
你可以改变下输出为十进制,这样就更好理解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-1 15:18:33 | 显示全部楼层
printf("%o\n")输出的是8进制数啊4577560==4577554+4
地址可以说的内存的编号,你所说的一个地址就是一个字节。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-7-2 09:03:20 | 显示全部楼层
scdwuhan 发表于 2016-7-1 14:09
因为每一个int变量占四个字节,而一个地址值表示一个字节,那么数组的每一个元素的地址值差为4。
因为你的 ...

谢谢,竟然忘记这个了····
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-7-2 09:03:57 | 显示全部楼层
小剑剑 发表于 2016-7-1 15:18
printf("%o\n")输出的是8进制数啊4577560==4577554+4
地址可以说的内存的编号,你所说的一个地址就是一个 ...

谢谢,竟然忘记这个了····
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-7-3 18:34:54 | 显示全部楼层
学习电脑 发表于 2016-7-2 09:03
谢谢,竟然忘记这个了····

一个地址不是占4个字节吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-27 04:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表