学习电脑 发表于 2016-7-1 11:26:46

C语言求助

# include <stdio.h>



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


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



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


为什么输出地址不是连续相等的变化呢? 每个地址能存多少个字节?

scdwuhan 发表于 2016-7-1 14:09:49

因为每一个int变量占四个字节,而一个地址值表示一个字节,那么数组的每一个元素的地址值差为4。
因为你的输出是%o,为八进制输出,所以0+4=4,4+4就进位了,末位为0 。
你可以改变下输出为十进制,这样就更好理解

小剑剑 发表于 2016-7-1 15:18:33

printf("%o\n")输出的是8进制数啊4577560==4577554+4
地址可以说的内存的编号,你所说的一个地址就是一个字节。

学习电脑 发表于 2016-7-2 09:03:20

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

谢谢,竟然忘记这个了····

学习电脑 发表于 2016-7-2 09:03:57

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

谢谢,竟然忘记这个了····

学习电脑 发表于 2016-7-3 18:34:54

学习电脑 发表于 2016-7-2 09:03
谢谢,竟然忘记这个了····

一个地址不是占4个字节吗?
页: [1]
查看完整版本: C语言求助