Possible Duplicate:
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 上运行这个程序
据我所知,局部自动变量的范围仅限于 block /函数的生命周期。
- foo() 中的变量 i 存储在哪个内存段中?或者函数的所有局部变量都存储在哪里?
- 我如何从其他函数访问它?
最佳答案
访问 foo1()
中的 *p
时,您正在调用未定义的行为。
如果您添加了这样的功能:
void do_very_little(void)
{
char buffer[] = "abcdef";
puts(buffer);
}
并在调用 foo()
和 foo1()
之间调用它,您可能会得到不同的输出。但这并不能保证;未定义行为的有趣之处在于,任何事情都可能发生,而且您没有理由提示。
关于c - C中局部变量的内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11643817/