请教 : 关于指针在函数中改变后返回的一个小问题,
今天没事写了一个小程序测试指针,结果却和我想的不一样程序中 函数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]]







