被调函数返回一个函数内部定义的变量的地址,此时这个地址对应的垃圾值能被还原吗?
下面这段代码被调函数返回了一个在自己内部定义的变量的地址。我在想虽然内存被释放了,但是由于之前有为这块内存写入一个值
再用一个指针去指向这块内存的地址,读取所谓的垃圾值时是否还能还原之前的那个值?
用下面这段代码测试从结果看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 编辑 ]










