gpt4 book ai didi

c++ - 如何更改结构对象的成员值? (C++ 结构初学者)

转载 作者:太空狗 更新时间:2023-10-29 23:28:45 24 4
gpt4 key购买 nike

刚开始了解结构,我以为我了解它们的工作原理,使用点运算符访问对象的成员,但我显然不了解,因为下面的 readEmployeeRecord 函数不了解'根本不起作用。我应该怎么做? (代码简短且 self 解释)

非常感谢您花时间向我进一步解释结构!当然,我首先尝试了谷歌,但我找不到一个完全按照我想要的方式输入数据的示例,并且不确定我应该如何去做。

#include <iostream>
#include <iomanip>

using namespace std;

//Employee type
struct Employee{
float wage;
char status;
char dept[4]; //for 3letter department, last position is \0 correct?
};

//function definitions
void readEmpoyeeRecord(Employee staff);
void printEmployeeRecord(Employee staff);

int main(){

Employee employeeA;
readEmpoyeeRecord(employeeA);
printEmployeeRecord(employeeA);
return 0;
}
void readEmpoyeeRecord(Employee employee){
cout << "Enter empolyees wage: ";
cin >> employee.wage;
cout << "Enter empolyees status (H or S): ";
cin >> employee.status;
cout << "Enter empolyees dept (ABC): ";
cin >> employee.dept;
}
void printEmployeeRecord(Employee staff){
cout << "Wage: Status: Department:" <<endl;
cout << fixed << setprecision( 2 ) << staff.wage;
}

最佳答案

首先,尝试在 google 上搜索“按引用和按值传递参数”。

您将了解到:

void readEmpoyeeRecord(Employee staff);

按值将变量传递给函数,这意味着在函数内部创建并使用了对象的拷贝,因此原始对象不会被修改,只会修改拷贝。

要获得所需的结果,请使用:

void readEmpoyeeRecord(Employee& staff);

通过引用传递意味着您传递的是完全相同的对象,而不是拷贝。

您的代码基本上会像这样工作:

//create new employee
Employee employeeA;
//call method readEmployeeRecord on a copy of employeeA
readEmpoyeeRecord(employeeA);
//call method printEmployeeRecord on a copy of employeeA
printEmployeeRecord(employeeA);

关于c++ - 如何更改结构对象的成员值? (C++ 结构初学者),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8227603/

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