C语言中局部变量的内存分配
可能重复:C语言中局部变量的内存分配,c,memory-management,C,Memory Management,可能重复: 输出:5(foo1()打印i的值) 注意:我在Linux上运行这个程序 据我所知,局部自变量的范围仅限于块/函数的寿命 foo()中的变量i存储在哪个内存段中?或者函数的所有局部变量都在哪里存储 如何从另一个函数访问它 在foo1()中访问*p时,您正在调用未定义的行为。 如果添加了如下函数: void do_very_little(void) { char buffer[] = "abcdef"; puts(buffer); } 在调用foo()和foo1()
输出:5(foo1()打印i的值) 注意:我在Linux上运行这个程序 据我所知,局部自变量的范围仅限于块/函数的寿命
在
foo1()
中访问*p
时,您正在调用未定义的行为。
如果添加了如下函数:
void do_very_little(void)
{
char buffer[] = "abcdef";
puts(buffer);
}
在调用
foo()
和foo1()
之间调用它,可能会得到不同的输出。这不是保证;关于未定义的行为,有趣的一点是,任何事情都可能发生,你没有理由抱怨。这已经被问到了,请在发布之前搜索网站。你也可以使用编辑窗格顶部的按钮来组织你的问题,因为你现在可以在chris的编辑之后找到它。在提出要求之前,请至少投入一点工作。
void do_very_little(void)
{
char buffer[] = "abcdef";
puts(buffer);
}