在C ++中通过函数传递变量

时间:2014-11-20 14:22:31

标签: c++ function variables

所以我试图用C ++编写一个基本程序来获取某些东西的成本,数量,并计算三个不同函数中的总数/小计,然后在main()中显示它。 / p>

问题是,变量不能使其脱离功能,我不知道为什么。我已经将输出语句放在函数本身中进行检查,而问题似乎只是在我试图将它们从所述函数中拉出来时。

#include <iostream>

using namespace std;

int price(int cost)
{
cout << "What is the cost of the robot?" << endl;
cin >> cost;

if (cost < 1000) //validation
{
    cout << "Cost is too low. Setting to $1000." << endl;
    cost = 1000;
    return cost;
}

return cost;
}

int numRobots(int number)
{
cout << "How many robots are being ordered?" << endl;
cin >> number;

if (number < 50) //validation
{
    cout << "We only sell in quantities of 50 or more. Setting quantity to 50." << endl;
    number = 50;
    return number;
}

return number;
}

void grandTotal(int cost, int number, double &subtotal, double &total)
{
subtotal = (cost * number);
total = (subtotal * .07) + subtotal;
}

int main()
{
int cost = 0;
int number = 0;
double subtotal = 0;
double total = 0;

price(cost);`enter code here`
numRobots(number);
grandTotal(cost, number, subtotal, total);

cout << cost; //testing
cout << number; //outputs
cout << total; //of
cout << subtotal; //variables

system("pause");
return 0;

3 个答案:

答案 0 :(得分:4)

price(cost);

您正在调用一个返回int的函数,但您不会将int存储在任何位置。您可能希望返回到教科书并查看有关功能及其工作原理的章节。没有冒犯,但这是相当基本的。

你对numRobots做了同样的事情。

或者,你可以通过引用传递参数并修改它,但imo,这不太容易理解。

TL;博士;

你应该做int cost = price();(函数没有理由把int作为参数)

答案 1 :(得分:0)

使用返回值或通过引用或指针传递参数。

1。    int result = numRobots(number);

2。    int numRobots(int&amp; number){.....}

答案 2 :(得分:0)

您需要通过引用传递变量:

int cost = 0;
int number = 0;
price(cost);
numRobots(number);

void price(int& cost)
{
    ....
}

void numRobots(int& number)
{
    ....
}

在这种情况下请注意void返回类型!

或者,您可以使用return值:

int cost = price(cost);
int number = numRobots(number);

但是这个方法没有多大意义,因为作为参数传递给方法的变量与存储返回值的变量相同!