gpt4 book ai didi

c++ - 通过数学引用传递

转载 作者:行者123 更新时间:2023-11-27 23:38:03 25 4
gpt4 key购买 nike

我开了一家汽水店,我想把所选汽水的成本(2 美元)加到“购物车”总金额中。我正在尝试使用按引用传递,但出现以下错误。

我还尝试在加法函数中将 * 添加到 z 整数,但它会导致另一个错误。如何将传递函数应用于数学问题?

错误:[错误] 从“int*”到“int”的无效转换 [-fpermissive]


cout << "Your total is " << addition (x,&z) << '\n';

主要代码:


// Menu Selection
#include <iostream>
using namespace std;

void passbyreference (int *z) {
*z=0;
}

int addition (int a, int b)
{
int z;
z = a + b;
return z;


}

void printcost (int z){
cout << "your total is $" << z << endl;
}
int main()
{
int x=2, y=2, z=0;

char selection = ' ';
string name = "";
string address = "";


//Ask user for her/his name

cout << "Please enter your name: ";
getline(cin, name);

//display user name
cout << "Hello "+ name << endl;

cout<< "Please enter your address: ";
getline(cin, address);

cout << "Your address is "+ address << endl;

do
{
cout << "\n\n Welcome to the soda shop, please choose your drink. \n\n" << endl;
// display menu
cout<<"My Store";
cout<<"========" << endl;
cout<<"1 - $2 Cola" << endl;
cout<<"2 - $2 Root Beer" << endl;
cout<<"3 - $2 Sprite" << endl;
cout<<"X - Exit " <<endl<<endl;

cout<<"Enter selection: ";
// read user selection
cin>>selection;

switch(selection)
{
case '1':
cout<< "Cola" << endl;
cout << "Your total is " << addition (x,&z) << '\n';
break;
case '2':
cout<< "Root Beer" << endl;
cout << "Your total is " << addition (x,z) << '\n';
break;
case '3':
cout<< "Sprite" << endl;
cout << "Your total is " << addition (x,z) << '\n';
break;
case 'X' :
case 'x':
cout<<"Thank you" << endl;
break;
// other than 1, 2, 3 and X...
default : cout<<"Invalid selection. Please try again";
// no break in the default case
}
cout<<endl<<endl;
} while (selection!= 'X' && selection != 'x');

return 0;
}

最佳答案

我假设您了解指针工作原理的基础知识。

如果你用 int *z; 初始化一个指针,这意味着 z 将持有一个内存地址。

然后将指针分配给一个变量(定义为 int a = 10; ),您可以编写 z = &a

发生的事情是 &a 给出该变量的内存地址,然后它被分配给 z 这意味着 *z 将给出你解析了 z 持有的内存地址的值。

你在做什么并不清楚,但我假设你正在将 xz 传递给函数,并且你正在以某种方式尝试更新总值在 z 中。

你需要将int addition (int a, int b)修改为int addition (int a, int *b)让它接受一个指针作为a参数,然后您需要使用参数中的相同 *b 来更新总值。

我写了正确的代码。如果这对您有帮助,请投票。

// Menu Selection
#include <iostream>
using namespace std;

void passbyreference (int *z) {
*z=0;
}

int addition (int a, int *b)
{
*b = *b + a;
return *b;


}

void printcost (int z){
cout << "your total is $" << z << endl;
}
int main()
{
int x=2, y=2, z=0;

char selection = ' ';
string name = "";
string address = "";


//Ask user for her/his name

cout << "Please enter your name: ";
getline(cin, name);

//display user name
cout << "Hello "+ name << endl;

cout<< "Please enter your address: ";
getline(cin, address);

cout << "Your address is "+ address << endl;

do
{
cout << "\n\n Welcome to the soda shop, please choose your drink. \n\n" << endl;
// display menu
cout<<"My Store";
cout<<"========" << endl;
cout<<"1 - $2 Cola" << endl;
cout<<"2 - $2 Root Beer" << endl;
cout<<"3 - $2 Sprite" << endl;
cout<<"X - Exit " <<endl<<endl;

cout<<"Enter selection: ";
// read user selection
cin>>selection;

switch(selection)
{
case '1':
cout<< "Cola" << endl;
cout << "Your total is " << addition (x, &z) << '\n';
break;
case '2':
cout<< "Root Beer" << endl;
cout << "Your total is " << addition (x, &z) << '\n';
break;
case '3':
cout<< "Sprite" << endl;
cout << "Your total is " << addition (x, &z) << '\n';
break;
case 'X' :
case 'x':
cout<<"Thank you" << endl;
break;
// other than 1, 2, 3 and X...
default : cout<<"Invalid selection. Please try again";
// no break in the default case
}
cout<<endl<<endl;
} while (selection!= 'X' && selection != 'x');

return 0;
}

关于c++ - 通过数学引用传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57667636/

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