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