可能重复:可以在其范围之外访问局部变量的内存吗? 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上运行此程序
据我所知,局部自体变量的范围仅限于块/函数的寿命 .
-
在foo()中这个变量得到的内存段是什么?或函数的所有局部变量在哪里获得商店?
-
如何从其他功能访问此功能?
1 回答
在
foo1()
中访问*p
时,您正在调用未定义的行为 . 如果您添加了这样的函数:并在调用
foo()
和foo1()
之间调用它,你可能得到一个不同的输出 . 没有理由抱怨.2399155没有理由提出申诉 .