Chinaunix首页 | 论坛 | 博客
  • 博客访问: 356053
  • 博文数量: 168
  • 博客积分: 6895
  • 博客等级: 准将
  • 技术积分: 1726
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-12 23:01
文章分类

全部博文(168)

文章存档

2011年(6)

2010年(162)

我的朋友

分类: LINUX

2010-08-14 17:34:15

不好意思,还有一个补充:
代码如下:
#include

void a()
{
    int i;
    int j;

    printf( "i's address is %p\n", &i );
    printf( "j's address is %p\n", &j );
}

void b()
{
    int x;
    int y;

    printf( "x's address is %p\n", &x );
    printf( "y's address is %p\n", &y );

}

int main( void )
{
    a();
    b();
    return( 0 );
}


输出为:
i's address is 0xbfc8bd24
j's address is 0xbfc8bd20
x's address is 0xbfc8bd24
y's address is 0xbfc8bd20
提高内存利用率,一个调用完,调另一个。

大家好:
      有这样一个问题和我想象的不一样,问题如下:
代码:
#include

int main( void )
{
    int i;
    int j;
    int a[10];

    printf( "i's address is %p\n", &i );
    printf( "j's address is %p\n", &j );
    printf( "a's address is %p\n", a );

    for( i = 0; i < 10; i++ )
    {
        printf( "a[%d]'s address is %p\n", i, &a[i] );
    }

    return( 0 );
}


输出如下:
i's address is 0xbfa76f60
j's address is 0xbfa76f5c
a's address is 0xbfa76f34
a[0]'s address is 0xbfa76f34
a[1]'s address is 0xbfa76f38
a[2]'s address is 0xbfa76f3c
a[3]'s address is 0xbfa76f40
a[4]'s address is 0xbfa76f44
a[5]'s address is 0xbfa76f48
a[6]'s address is 0xbfa76f4c
a[7]'s address is 0xbfa76f50
a[8]'s address is 0xbfa76f54
a[9]'s address is 0xbfa76f58

我想的是a[0]的地址应该是0xbfa76f58,a[1]
的是0xbfa76f54,。。。。。,但是事实上不是这样刚好相反。是不是进入栈中的顺序是a[10]先进,然后依次进入,还是和编译器有关系,请大家互相讨论,各抒己见,我学习一下,哈哈,谢谢。

阅读(625) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-08-16 16:55:55

这个跟编译器有关