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

 
											







 
	    




 
					
				
			 
					
				
			