【发布时间】:2016-07-27 23:31:30
【问题描述】:
我正在研究自动变量的工作原理。我知道它只能在声明它的块或函数内访问,并且它的生命周期在同一个函数或块内。因此,我正在尝试检查以下代码。
/头文件的声明/
void testfn(void);
int *p;
int main(void)
{
testfn();
print("%d\n",*p);
return 0;
}
void testfn(void)
{
int x=444;
p=&x;
}
输出是 - 444
我想知道当 testfn();退出,变量 x 将被销毁。那么在 main 函数中指针 (*p) 如何打印 444。 这是如何工作的......或者如果我错过了什么。 请澄清我的疑问。
谢谢
【问题讨论】:
-
未定义的行为...
-
这就是未定义行为的原因:它可能看起来像预期的行为,但实际上并非如此。不幸的是,这是未定义的,未定义的错误行为。
-
地址与函数激活时的值相同,但它指向的内存不再分配给该函数。但这完全是浪费时间。我知道您正在努力学习,但这不是您应该在此处发布的内容。
标签: c