这段代码输出什么?? 我的分析哪里有错?
int * p = NULL;
void func2()
{
int a=1;
p = &a;
}
void func1()
{
(*p)--;
}
int _tmain(int argc, _TCHAR* argv[])
{
func2();
int b;
for(b=1;b<10;b++)
{
func1();
cout<<b<<endl;
}
}
这个输出时什么? 为什么??
******************************************************
我的分析如下
func2();
int b;
cout<<"b :"<<&b<<endl;
for(b=1;b<10;b++)
{
func1();
cout<<b<<endl;
}
你看这段代码, 调用func2 时候 在栈区 入栈 a
执行完之后又出栈, 这时候p指针就指向刚刚入栈的位置。
然后b 入栈, p指向 b
然后在循环里 调用func1 这时候p指向的地址值减1, 也就是 b减了1,现在b是0了。
那么就会导致无限循环,输出0.
ACTION 22:57:01
为什么结果输出的是 1,2,3,4,5.。。
我把func1修改如下 , 就按预期 无限循环输出0了。
void func1()
{
(*(p-1))--;
}