#include <stdio.h>
int *foo(void);
int main(int argc, char* argv)
{
int *m = foo();
printf("m = %p, *m = %d\n", m, *m); // m = 000000000062FDDC, *m = 10
printf("m = %p, *m = %d\n", m, *m); // m = 000000000062FDDC, *m = 0
printf("m = %p, *m = %d\n", m, *m); // m = 000000000062FDDC, *m = 0
printf("m = %p, *m = %d\n", m, *m); // m = 000000000062FDDC, *m = 0
printf("m = %p, *m = %d\n", m, *m); // m = 000000000062FDDC, *m = 0
return 0;
}
int *foo(void)
{
int i = 10;
return &i;
}
为什么第一个printf汉能拿到值,函数返回时不应该被销毁了吗?