| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 480 人关注过本帖
标题:请教 : 关于指针在函数中改变后返回的一个小问题,
取消只看楼主 加入收藏
asmdaydream
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:中原
等 级:版主
威 望:13
帖 子:257
专家分:840
注 册:2009-5-10
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
请教 : 关于指针在函数中改变后返回的一个小问题,
今天没事写了一个小程序测试指针,结果却和我想的不一样
程序中 函数free_s释放空间,然后令指针等于 NULL,
我认为程序最后会出现断错误的,但是程序却正常输出了数据
后来经过多次测试发现,在函数中指针的变化并不影响,函数外的值,现在弄的我都不能确定下面的程序中空间是否被释放了
请问那位大虾有办法解决这种问题
程序代码:
#include <stdio.h>
#include <stdlib.h>

struct test{
    int a;
    int b;
};
void free_s(struct test *c)
{
    free(c);
    c == NULL;
}
int main()
{
    struct test *c;
    c = (struct test *)malloc(sizeof(struct test));
    c->a = 1;
    c->b = 2;
    printf("c->a:%d,c->b:%d\n", c->a, c->b);  //输出

    free_s(c);                       //释放空间,指针指空

    printf("c->a:%d,c->b:%d\n", c->a, c->b); // 输出(我本以为这会错误)     

    return 0;
}

运行结果
c->a:1,c->b:2
c->a:0,c->b:2

[[it] 本帖最后由 asmdaydream 于 2009-8-4 16:42 编辑 [/it]]
搜索更多相关主题的帖子: 指针 函数 
2009-08-04 16:32
asmdaydream
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:中原
等 级:版主
威 望:13
帖 子:257
专家分:840
注 册:2009-5-10
收藏
得分:0 
回复 楼主 asmdaydream
汗!!代码写错了
c == NULL  这句很失败!!
void free_s(struct test *&c)  添加个&就可以好了(C++的方法,C不行)

运行结果
c->a:1,c->b:2
Segmentation fault

[[it] 本帖最后由 asmdaydream 于 2009-8-4 17:29 编辑 [/it]]

常走夜路不怕黑 长沙PHP高薪招聘群6K+ 95926136
2009-08-04 17:17
asmdaydream
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:中原
等 级:版主
威 望:13
帖 子:257
专家分:840
注 册:2009-5-10
收藏
得分:0 
谢谢,godbless
你的方法很好,也很有效果
今天有收获,谢谢

常走夜路不怕黑 长沙PHP高薪招聘群6K+ 95926136
2009-08-04 17:23
快速回复:请教 : 关于指针在函数中改变后返回的一个小问题,
数据加载中...
 
   



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

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