| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 473 人关注过本帖
标题:【返回指针的函数】不明点
取消只看楼主 加入收藏
果沫
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:198
专家分:960
注 册:2013-1-30
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
【返回指针的函数】不明点
程序代码:
#include <stdio.h>
int *fun(void)
{
    int a = 7;

    return &a;
}

int main()
{
    printf("%d\n",*fun());

    return 0;
}


我写了如上的一小段代码,在fun函数运行结束时返回局部变量a的地址,并在主函数中访问地址输出数据,但却不出错,成功输出7。

不是说函数中定义的局部变量都是保存在栈中,当函数结束时,其栈上的数据也会被销毁吗,为啥被销毁了还能在主函数中访问那段地址成功输出其中的数据。


[ 本帖最后由 果沫 于 2013-2-24 11:59 编辑 ]
2013-02-24 11:55
果沫
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:198
专家分:960
注 册:2013-1-30
收藏
得分:0 
回复 2楼 yuccn
程序代码:
#include <stdio.h>
char *Func(void)
{
    char str[30] = {"wwww"};
    return str;
}

char *fun(void)
{
    char str[30] = {"fwef"};
    return str;
}


int main(void)
{
    printf("%c    %c\n",*fun(),*Func());
    return 0;
}


上面这样,返回到输出之间,并且还有其他函数的调用,还是会成功输出f和w啊QAQ....不太明白你说的啊
2013-02-24 12:25
果沫
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:198
专家分:960
注 册:2013-1-30
收藏
得分:0 
回复 3楼 Susake
我知道-0- ,可是函数结束栈上的数据被销毁,应该是会访问出错的啊QAQ
2013-02-24 12:26
果沫
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:198
专家分:960
注 册:2013-1-30
收藏
得分:0 
QAQ
没人帮忙解释一下么
2013-02-24 13:57
快速回复:【返回指针的函数】不明点
数据加载中...
 
   



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

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