我定义了以下结构:
typedef struct {
double salary;
} Employee;
我想更改salary
的值。我尝试通过引用传递它,但值保持不变。以下是代码:
void raiseSalary (Employee* e, double newSalary) {
Employee myEmployee = *e;
myEmployee.salary = newSalary;
}
当我调用此函数时,salary
保持不变。我做错了什么?
答案 0 :(得分:7)
您正在传递指向原始但的指针,然后您创建它的副本:
Employee myEmployee =*e;
创建副本。
e->salary = newSalary;
会做到的。或者,如果你必须出于某种原因有一个辅助变量:
Employee* myEmployee =e;
Myemployee->salary= newSalary;
这样,两个变量都将指向同一个对象。
答案 1 :(得分:3)
void raiseSalary(Employee* e, double newSalary){
e->salary= newSalary;
}
在代码中,您可以创建结构的本地副本,并且只更改此本地副本。
答案 2 :(得分:1)
假设您已在呼叫者处分配了内存,则应为:
e->salary= newSalary;