gpt4 book ai didi

c++ - 如果它在不同的函数集中,我如何添加或减去一个变量?

转载 作者:行者123 更新时间:2023-11-30 03:17:41 27 4
gpt4 key购买 nike

我在函数 (int main) 中声明了一个变量,然后在函数 (void) 中创建了一个语句,当我操作该变量时,它所具有的值在函数 (int main) 中没有一点改变。如果我所做的语句在不同的函数中,我该如何操作该变量?

这是我的代码。

#include <iostream>
#include <cstdlib>
using namespace std;

void shoppingList (int money, int userChoice)
{
cout<<"1. Apples for 20$"
<<"\n2. Oranges for 30$"
<<"\n\nChoice: ";
cin>>userChoice;

if (userChoice == 1)
{
money = money - 20;
cout<<"20$ had been deducted ";
cout<<"\nMoney: "<<money<<endl;
}
if (userChoice == 2)
{
money = money - 30;
cout<<"30$ had been deducted ";
cout<<"\nMoney: "<<money<<endl;
}
}

int main()
{
int userChoice;
int money = 500;
while (true)
{
char choices[2];
cout<<"Money: "<<money<<"\n\n"<<endl;
cout<<"1. Draw some Numbers"
<<"\n2. Exit"
<<"\n\nChoice: ";
cin>>choices;

if (choices[0] == '1')
{
system ("CLS");
shoppingList (money ,userChoice);
system ("PAUSE");
system ("CLS");
}

else if (choices[0] == '2')
{
return 0;
}

else if (choices[0] > '2' || choices[0] < '1')
{
cout<<"\nInvalid Input\nPLs try again"<<endl;
system ("PAUSE");
system ("CLS");
}

else
{
cout<<"\nInvalid Input\nPLs try again"<<endl;
system ("PAUSE");
system ("CLS");
}
}
}

如果还有其他错误或增强它的方法,请告诉我如何做。提前致谢

最佳答案

以下是一些观察结果,

案例 1: 在下面的快照中 moneyuserChoiceshoppingList ()具有局部作用域,因此该变量的任何更改都不会反射(reflect)在调用方法中。

void shoppingList (int money, int userChoice) { /* catch by value */
}
int main(void) {

shoppingList (money ,userChoice);

return 0;
}

如果我执行的语句在不同的函数中,我如何操作该变量?使用按引用变量传递而不是按值传递。例如

/* catch by references */
void shoppingList (int &money, int &userChoice) { /* this money is reference of money
declared in main(), so any change
with money in this API will reflect
in main() */

}
int main(void) {
shoppingList (money ,userChoice);
return 0;
}

在上述情况下,来自 main()你传递的函数money & 用引用变量 捕获,即没有为money 创建新内存在shoppingList ()即两者具有相同的内存位置,因此如果您对 money 进行任何更改和 userchoiceshoppingList()方法将反射(reflect)在 main() 中功能。

关于c++ - 如果它在不同的函数集中,我如何添加或减去一个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55285498/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com