栈再次理解
时间:2010-08-14 来源:harryxiyou
不好意思,还有一个补充:
代码如下:
#include <stdio.h>
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 <stdio.h>
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]先进,然后依次进入,还是和编译器有关系,请大家互相讨论,各抒己见,我学习一下,哈哈,谢谢。
代码如下:
#include <stdio.h>
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 <stdio.h>
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]先进,然后依次进入,还是和编译器有关系,请大家互相讨论,各抒己见,我学习一下,哈哈,谢谢。
相关阅读 更多 +