可能重复:
Can a local variable's memory be accessed outside its scope?
Scope vs life of variable in C
int *p;
void foo()
{
int i = 5;
p = &i;
}
void foo1()
{
printf("%d\n", *p);
}
int main()
{
foo();
foo1();
return 0;
}
输出:5(foo1()打印i的值)
注意:我在Linux上运行此程序
据我所知,局部自变量的范围仅限于块/函数的寿命。
答案 0 :(得分:2)
在*p
访问foo1()
时,您正在调用未定义的行为。
如果添加了这样的函数:
void do_very_little(void)
{
char buffer[] = "abcdef";
puts(buffer);
}
并在调用foo()
和foo1()
之间调用它,您可能会获得不同的输出。这没有保证;关于未定义行为的一个有趣的事情是任何事情都可能发生,你没有理由抱怨。