gpt4 book ai didi

c - 即使函数完成执行后,局部变量值和地址也会保留

转载 作者:行者123 更新时间:2023-11-30 21:27:44 25 4
gpt4 key购买 nike

#include<stdio.h>
int main()
{
int var=100;
int *ptr=&var;
fun(&ptr);
printf("%p",ptr);
printf("%d\n",*ptr);
}
int fun(int **var)
{
int j=10;
*var=&j;
printf("%p\n",*var);
printf("%d\n",**var);
}

输出:

0x7fff2c96dba4100x7fff2c96dba410

即使函数完成执行后,值如何保留?我在 gcc 中执行了几次,在在线编译器中它给出了相同的结果。请帮助我理解这一点...提前致谢。

最佳答案

How is value getting retained even after function completing execution?

未定义的行为 (UB)。它可能看起来“有效”,但 C 并未指定如此。

fun(&ptr);运行良好,但printf("%p",ptr); UB 的值为 ptr不再有效。许多系统都会容忍这种 UB。

取消引用 ptr ,与 printf("%d\n",*ptr);更糟糕的是UB。更有可能出现不良行为。最好不要尝试其中任何一个。

关于c - 即使函数完成执行后,局部变量值和地址也会保留,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48172666/

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