我定义了以下结构:
typedef struct {
double salary;
} Employee;
我想更改salary
的值。我试图通过引用传递它,但值保持不变。下面是代码:
void raiseSalary (Employee* e, double newSalary) {
Employee myEmployee = *e;
myEmployee.salary = newSalary;
}
当我调用这个函数时,salary
保持不变。我做错了什么?
最佳答案
您正在传递指向原始指针的指针,但是然后您创建了它的副本:
Employee myEmployee =*e;
创建一个副本。
e->salary = newSalary;
会做的。或者,如果您出于任何原因必须有一个辅助变量:
Employee* myEmployee =e;
Myemployee->salary= newSalary;
这样,两个变量将指向同一个对象。
关于C:通过引用传递结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10719847/