| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 489 人关注过本帖
标题:局部变量返回问题
只看楼主 加入收藏
q1826050194
Rank: 2
等 级:论坛游民
帖 子:67
专家分:19
注 册:2011-3-7
结帖率:77.78%
收藏
已结贴  问题点数:10 回复次数:7 
局部变量返回问题
#include<stdio.h>
int *func();
int main()
{   
    int *p;
    p=func();
    printf("%d",*p);
    return 0;
}
int* func()
{
      int s=4;
    return &s;
}
里面的s的局部变量的地址里面的变量应该已经被销毁了的吖 为什么在p还能输出它的值,不明白,求解释!
搜索更多相关主题的帖子: return 
2011-05-19 09:13
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:0 
真被问倒了,不清楚!

   唯实惟新 至诚致志
2011-05-19 09:31
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:0 
以下是引用qq1023569223在2011-5-19 09:31:42的发言:

真被问倒了,不清楚!
不过devc++中,这个程序貌似是错的

[ 本帖最后由 hjywyj 于 2011-5-19 09:40 编辑 ]
2011-05-19 09:38
zaixuexi
Rank: 12Rank: 12Rank: 12
来 自:上海
等 级:火箭侠
威 望:8
帖 子:858
专家分:3233
注 册:2010-12-1
收藏
得分:5 
1. 代码
程序代码:
#include<stdio.h>

int* func(void);

int main()
{   
    int *p;
   
    p = func();             //p->栈上的空间
    cc_test();             
    printf("%d", *p);       //搞清楚p指向什么东西
   
    return 0;
}

int* func(void)
{
    int s = 4;            
   
    return &s;             //局部变量释放就是栈指针归位,又不清空值的
}

int cc_test(void)
{
    int s = 5;             //栈上的值发生了变化
}

技术问题,请不要以短消息方式提问
2011-05-19 10:15
键盘农夫
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:88
专家分:106
注 册:2011-5-5
收藏
得分:0 
回复 楼主 q1826050194
什么叫“销毁”?
没这个事

《狂人C:程序员入门必备》
2011-05-19 11:03
w123012306
Rank: 9Rank: 9Rank: 9
来 自:湖南
等 级:蜘蛛侠
威 望:4
帖 子:307
专家分:1180
注 册:2010-4-22
收藏
得分:0 
应该是被回收吧

楼上,楼下的一定要幸福开心哦!
2011-05-19 11:28
jacksongod
Rank: 2
等 级:论坛游民
帖 子:32
专家分:82
注 册:2011-5-18
收藏
得分:2 
p是个指针,那个函数返回了s 的地址 s的内容是不会被销毁的,不用指针的话在main里你是没办法定位到s的位置的
2011-05-19 12:54
快速回复:局部变量返回问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.078473 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved