gpt4 book ai didi

c - 在 C 中使用超出其范围的自动变量

转载 作者:行者123 更新时间:2023-11-30 20:23:18 26 4
gpt4 key购买 nike

我正在研究自动变量的工作原理。我知道它只能在声明它的 block 或函数内访问,并且它的生命周期位于同一函数或 block 内。所以我正在尝试检查以下代码。

/头文件声明/

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。这是如何工作的...或者我是否遗漏了一些东西。请澄清我的疑问。

谢谢

最佳答案

巧合的是,原来的值还保留着。使用另一个编译器或另一个编译配置,它可以采用任何其他值,否则程序可能会崩溃。

如果在 testfnprintf 函数之间调用任何其他对其局部变量执行某些操作的函数,您可能会发现不再获得 444 值。但这又只是巧合。

关于c - 在 C 中使用超出其范围的自动变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36470173/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com