为什么我的程序没有更改结构变量中的值?

Why my program is not changing values in struct variables?

本文关键字:变量 结构 程序 我的 为什么      更新时间:2023-10-16

好吧,我输入了这个简单的程序:

#include <iostream>
using namespace std;
struct workers
{
char workername[55];
int workernumb;
float workerwage;
};
void changewage(workers worker1);
void show(workers worker1);
int main() // Defines all the workers profile and then call 'void show' to show the selected worker profile, is working well.
{
workers worker1=
{
"The name of the worker goes here",
The number of the worker goes here,
The wage of the worker goes here
};
cout << "Worker data:" << endl;
show(worker1);
changewage(worker1);
cout << "New worker wage:" << endl;
show(worker1);
return 0;
}
void show(workers worker1) // Program that shows the workers profile, is also working fine.
{
cout << "Name: " << worker1.workername << endl;
cout << "Number: " << worker1.workernumb<< endl;
cout << "Wage: " << worker1.workerwage<< endl;
}
void changewage(workers worker1) // Program that changes the wage of a selected worker, here it is not working fine.
{
float newwage;
cin >> newwage;
newwage=worker1.workerwage;
}

它旨在用于显示工人资料并更改他的工资,当我输入新工资时,它应该更改"worker1.workerwage",使"void show"中的单位也更改,然后新配置文件将显示新的工人工资。 问题是它仍然显示以前的值,并且没有更改任何内容。 PS:程序本身运行良好,唯一的问题是它的功能之一没有按照我想要的方式工作。而且正如你所看到的,我是学习 c++ 的初学者,如果我犯了一些错误,很抱歉......

如果要修改对象,则必须通过引用传递。

void changewage(workers& worker1) // Program that changes the wage of a selected worker, here it is not working fine.
{
float newwage;
cin >> newwage;
worker1.workerwage = newwage; // another mistake was here
}

代码不起作用的原因是,复制了 worker1,而您修改了副本,复制的对象是函数的本地对象,当函数返回时,复制的对象将死亡。