我正在尝试创建一个允许用户输入矩形的高度和宽度的程序,并显示该区域,但是我的程序的每一步都是使用函数作为赋值的一部分完成的。
我遇到的问题是我已经分配了变量和初始化变量,但我不确定如何用用户输入的数据覆盖它们。如果我没有初始化变量,程序将无法运行。我希望有人能告诉我我做错了什么。我的代码是:
#include <iostream>
using namespace std;
double getWidth(int x);
double getLength(int y);
double getArea(double x, double y, double a);
double displayData(double a);
int main()
{
int x = 0, y = 0, a = 0;
getWidth(x);
getLength(y);
getArea(x, y, a);
displayData(a);
system("pause");
return 0;
}
double getWidth(int x)
{
cout << "Please enter the width: ";
cin >> x;
return x;
}
double getLength(int y)
{
cout << "Please enter the length: ";
cin >> y;
return y;
}
double getArea(double x, double y, double a)
{
a = x*y;
return a;
}
double displayData(double a)
{
cout << a << endl;
return a;
}
答案 0 :(得分:1)
有两种传递变量的方法。方法一是按值传递。这是最常用的方法,也是您的程序正在执行的方法。在此方法中,正在生成变量中的数据副本并将其提供给函数。您的函数只更改副本而不是原始变量。
第二种方法是通过引用传递。通过引用传递时,您的函数有效地具有指向原始变量的指针,因此可以更改它。要通过引用传递,请在函数头中的变量前放入一个&符号(&amp;)。请注意下面的代码中没有必要通过引用将x和y传递给getArea,因为getArea只需要读取这些变量而不是写入它们。
然而,这会为您带来一个新问题。当您通过值传递时,可以将变量类型更改为更大的类型,而无需显式强制转换。通过引用传递是不可能的,因为程序的不同部分将尝试将变量视为不同的类型。即,main想要写入/读取,就好像它是一个整数,并且getArea想要写入/读取,就好像它是一个double。这两种数据类型具有不同的大小和不同的格式,因此这是不可能的。因此,您必须在main中声明a是double。
#include <iostream>
using namespace std;
double getWidth(int &x);
double getLength(int &y);
double getArea(double x, double y, double &a);
double displayData(double a);
int main()
{
int x = 0, y = 0;
double a;
getWidth(x);
getLength(y);
getArea(x, y, a);
displayData(a);
system("pause");
return 0;
}
double getWidth(int &x)
{
cout << "Please enter the width: ";
cin >> x;
return x;
}
double getLength(int &y)
{
cout << "Please enter the length: ";
cin >> y;
return y;
}
double getArea(double x, double y, double &a)
{
a = x*y;
return a;
}
double displayData(double a)
{
cout << a << endl;
return a;
}
答案 1 :(得分:0)
你似乎混淆了一些不同的概念。您应该传递引用并在函数内分配它们,或者传递较少的值并将它们分配给main中的某个变量。例如,您的getWidth应为:
double getWidth() {
double w;
cin >> w;
return w;
}
在你的主要内容你应该:
int main() {
/* ... */
double width = getWidth();
/* ... */
}
等等也是如此。您应该在C ++中查找引用和指针,这将是您可以执行此操作的另一种方式(并且您似乎对此感到困惑)。最后你应该在C ++书籍的一些介绍中找到函数的介绍,正如上面有人所说的那样。