gpt4 book ai didi

c++ - C中函数的局部变量范围

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:53:00 25 4
gpt4 key购买 nike

当我开始使用 C 编程时,我听说过以下场景。

尝试从外部访问,函数局部变量将导致错误(或垃圾值)。因为当我们从函数返回时堆栈被清除

但是我下面的代码示例打印了 50 的值。我正在使用最新的 GCC 编译器编译代码。

#include <stdio.h>

int * left();

int main()
{
int *p=left();
printf("%d\n",*p);
return 0;
}

int * left()
{
int i=50;
return &i;
}

在这个问题上启发我。

我能知道 C++ 中的行为吗??是不是类似于c..

最佳答案

变量“i”在堆栈上创建,当函数“left”返回时,堆栈被清除。当我说已清除时,这意味着变量“i”使用的地址被标记为可重复使用。在代码的其他部分使用相同的地址之前,该值将保持不变。就您而言,能给您想要的结果完全是运气。如果您在调用“left”之后再调用几个函数,我相当肯定您会得到错误的结果。

关于c++ - C中函数的局部变量范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1824245/

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