被调函数返回一个函数内部定义的变量的地址,此时这个地址对应的垃圾值能被还原吗?
下面这段代码被调函数返回了一个在自己内部定义的变量的地址。我在想虽然内存被释放了,但是由于之前有为这块内存写入一个值
再用一个指针去指向这块内存的地址,读取所谓的垃圾值时是否还能还原之前的那个值?
用下面这段代码测试从结果看int类型被还原了,char类型也以可以。返回字符串为什么不行?
程序代码:
#include <stdio.h> #define LEN 8 int * f1(void); char * f2(void); char * f3(void); int main(void) { int n; char c; char *s; int i; n = *f1(); printf("%d\n", n); c = *f2(); printf("%c\n", c); s = f3(); printf("%s\n", s); for(i = 0; i < LEN; i++) printf("%c\n", s[i]); return 0; } int * f1(void) { int a = 80; return &a; } char * f2(void) { char b = 'w'; return &b; } char * f3(void) { char j[LEN]; int i; for (i = 0; i < LEN; i++) j[i] = i + '0'; j[LEN -1] = '\0'; return j; }
[ 本帖最后由 TAAAAB 于 2015-3-19 16:33 编辑 ]