我把定义 i 和 b[20]倒了一下
int b[20];
int i;
输出结果就不一样了,看来还是临时变量压栈的顺序问题
我重新改写了下程序
int main(void)
{
int b[20] ;
int i ;
printf("0x%08x---0x%08x \n", &(b[-1]), &i);
for (i =100 ; i<125 ; ++i)
printf ("%d \n" , b[-1]);
return 0 ;
}
输出结果和楼主的一样,下面我画了下栈空间的示意图。
int i;
int b[20];
int b[20];
int i;
栈空间:
栈空间:
b[0]
i
b[1]
b[0]
b[2]
b[1]
b[3]
b[2]
b[4]
b[3]
b[5]
b[4]
b[6]
b[5]
b[7]
b[6]
b[8]
b[7]
b[9]
b[8]
b[10]
b[9]
b[11]
b[10]
b[12]
b[11]
b[13]
b[12]
b[14]
b[13]
b[15]
b[14]
b[16]
b[15]
b[17]
b[16]
b[18]
b[17]
b[19]
b[18]
i
b[19]