不能返回栈指针
不是说函数不能返回栈指针吗
int *fun();
main()
{
int *p;
p=fun();
printf( "\n%d ",*p);
}
int *fun()
{
int b;
int *str=&b;*str=1;
return str;
}
为什么会正常打印1
[解决办法]
因为为fun分配的栈内存还没有被人覆盖呢。
不信你在printf前再调用个别的函数,然后在打印试一下
[解决办法]
Polarislee(北极星)(无房无车,飘在北京) 说的对,是因为栈返回之后,没有被覆盖,而且经过测试,用几个值放在前面是没有用的,你试试我这个程序呢。
我这里debug版返回4273632。
环境为VS2005。
#include <stdio.h>
int *fun();
int main()
{
int *p;
int l = 5678;
p=fun();
int s = 3456;
int s1 = 3;
char ch = 'a ';
int tmp[1024] = {0};
printf( "\n%d ",*p);
}
int *fun()
{
int b;
int *str=&b;*str=1;
return str;
}