首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

不能返回栈指针解决方案

2012-02-27 
不能返回栈指针不是说函数不能返回栈指针吗int*fun()main(){int*ppfun()printf( \n%d ,*p)}int*fun

不能返回栈指针
不是说函数不能返回栈指针吗
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;
}

热点排行