一个函数中的变量从另一个函数中的变量中获取值
Variable in one function picks up value from variable in another function
当我在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;
}
我的输出显示:
输入圆半径:-15半径为 15
我的问题是: radius
和rad
是其函数的局部,那么rad
如何成为与radius
相同的值呢?它们具有不同的功能。
有人可以解释一下正在发生的事情吗?
未定义的行为。
调用 getdata()
时,radius
占用堆栈上的特定内存块,并使用用户的输入进行填充。当getdata()
退出时,该内存块可供以后重用,并且不会清除其内容。
当之后调用dis()
时,rad
没有被初始化,因此它会拾取它占用的内存块中已经存在的任何随机值。
最有可能的是,正在发生的事情是rad
恰好占用了radius
之前占用的同一内存块。这就是为什么你会看到相同的值。但这并不能保证,所以不要依赖它。 在 radius
或 rad
上方添加一些其他变量,您将看到不同的行为。
在执行依赖于变量的操作之前,请始终初始化变量。
如果变量未初始化,它将保存垃圾值!
在您的情况下rad
将打印垃圾值。每次编译时可能会有所不同。
相关文章:
- 是否可以将变量/函数返回作为模板参数传递
- 是否有一种方法可以修复编译器未找到特定的OPENCV变量/函数
- 访问实例化类的变量/函数
- 如何在变量函数参数列表中检测给定类型的参数的可用性,并在处理完所有参数后采取行动
- C 多组变量函数参数
- 最有cpu效率的方法是使用std::算法和变量函数模板的参数
- 在此作用域中未声明条件变量函数
- C 关于将数组复制到向量并调用其变量 /函数
- 仅在C 中的一个变量上,两个变量函数的数值集成(使用数值配方库)
- 在应用变量函数的矩阵元素上循环
- 如何向调试器隐藏变量/函数名
- C++11变量函数类型模板参数
- 变量函数参数的奇怪问题
- C++变量函数和cout
- c++模板变量函数未定义引用
- 我可以使用枚举类值作为变量函数的参数吗?
- 从另一个类访问变量/函数
- <"变量/函数"的多重定义>
- 从c++到C文件中定义的变量/函数的未定义引用
- 为什么转换变量函数参数很重要?