一个函数中的变量从另一个函数中的变量中获取值

时间:2018-03-17 05:16:39

标签: c++ function declaration

当我在devC ++中运行这个cpp代码时:

#include <iostream>
using namespace std;

#include <conio.h>

void getdata();
void dis();

void getdata()
{
    int radius;
    cout<<"\n enter radius of circle:-";
    cin>>radius;
}

void dis()
{   
    int rad;
    cout<<"\n num is "<<rad;
}

int main()
{
    //int radius;
    getdata();
    dis();

    getch();
    return 11;
}

我的输出显示:

enter radius of circle:-15
radius is 15

我的问题是: radiusrad是其功能的本地,那么radradius的价值是如何相同的?他们有不同的职能。

有人可以解释一下发生了什么吗?

2 个答案:

答案 0 :(得分:-1)

未定义的行为。

当调用getdata()时,radius占用堆栈上的特定内存块,并填充用户的输入。当getdata()退出时,该内存块可供以后重用,其内容不会被清除。

之后调用dis()时,rad未被初始化,因此它会获取它占用的内存块中已存在的任何随机值。

最有可能的是,rad恰好占据了radius之前占用的相同内存块。这就是为什么你看到相同的价值。但这不能保证,所以不要依赖它。在radiusrad上方添加一些其他变量,您会看到不同的行为。

在执行依赖于它们的操作之前,始终初始化变量。

答案 1 :(得分:-2)

如果变量未初始化,则会保留垃圾值!。

在您的情况下applicationWillEnterForeground将打印垃圾值。每次编译时它可能会有所不同。