c++ 为什么我的discount函数不起作用,我该怎么做才能使它起作用,使传递给它的值实际上显示[closed]

wlzqhblo  于 2023-02-26  发布在  其他
关注(0)|答案(1)|浏览(121)

这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
4天前关闭。
Improve this question

#include <iostream>
using namespace std;

struct ShoeType
{
    char style;
    double price;
};

void readShoeRecord(ShoeType& newShoe){
    cout << "Enter the shoe style: ";
    cin >> newShoe.style;
    cout << "Enter the shoe price: ";
    cin >> newShoe.price;
}

ShoeType discount(ShoeType oldRecord){
    ShoeType newRecord =oldRecord;
    newRecord.price= newRecord.price*0.9;
    return newRecord;    
}

int main(){
    ShoeType shoe1;

    readShoeRecord(shoe1);

    cout << shoe1.style << " $" << shoe1.price << endl;

    discount(shoe1);       //NEED HELP HERE
    cout << "Your new discount is:";
    cout << shoe1.price;

    return 0;
}

我试着通过引用传递它,看看它是否会改变,但什么也没发生。
我不能把cout << newRecord.price;放在main()中,因为它没有保存在main()中,而且重新请求也没有意义,因为我被告知返回。
我可以将旧价格的值全部保存在main()中,但它没有用,因为我想学习如何以正确的方式在函数中传递值。
请告诉我应该复习哪些概念,以便我完全理解这个概念。

pqwbnv8z

pqwbnv8z1#

你需要把discount()的返回值赋给一个变量,并在生成输出时使用它,如果你想覆盖它,你也可以把结果赋给shoe1。

#include <iostream>
using namespace std;

struct ShoeType {
    char style;
    double price;
};

void readShoeRecord(ShoeType& newShoe){
    cout << "Enter the shoe style: ";
    cin >> newShoe.style;
    cout << "Enter the shoe price: ";
    cin >> newShoe.price;
}

ShoeType discount(ShoeType oldRecord){
    ShoeType newRecord = oldRecord;
    newRecord.price = newRecord.price*0.9;
    return newRecord;
}

int main(){
    ShoeType shoe1;
    readShoeRecord(shoe1);
    cout << shoe1.style << " $" << shoe1.price << endl;
    ShoeType shoe2 = discount(shoe1);
    cout << "Your new discount is: " << shoe2.price << endl;
    return 0;
}

和示例会话:

Enter the shoe style: a
Enter the shoe price: 100
a $100
Your new discount is: 90

如果折扣仅取决于价格,则最好仅传入价格并返回价格,而不是整个ShoeType对象。
考虑将discount()设为struct ShoeType的常量成员函数。

相关问题