/*不理解为啥这个正确*/
#include <stdio.h>
int * f();
int main(){
int* result= f();
printf("%d\n",*result);
return 0;
}
int * f(){
int a=3;
int* i=&a;
return i;
}
为什么上面这段代码能正确执行? a (左值)是不是一个内存地址里面存了 3 (右值)?那么上面这段代码 i 和 a 是不是指向了同一块内存,内存里的值是 3 ?然后函数结束是不是这块内存就被释放了 3 就没了?为啥还能通过?
/*这段代码错的可以理解*/
#include <stdio.h>
int * f();
int main(){
int* result= f();
printf("%d\n",*result);
return 0;
}
int * f(){
int a=3;
return &a;
}