3

我定义了以下结构:

typedef struct {
    double salary;
} Employee;

我想改变salary. 我尝试通过引用传递它,但值保持不变。下面是代码:

void raiseSalary (Employee* e, double newSalary) {
    Employee myEmployee = *e;
    myEmployee.salary = newSalary;
}

当我调用这个函数时,salary保持不变。我究竟做错了什么?

4

3 回答 3

7

您正在传递指向原始文件的指针,随后您创建了它的副本:

Employee myEmployee =*e;

创建一个副本。

e->salary = newSalary;

会做的。或者,如果您出于某种原因必须有一个辅助变量:

Employee* myEmployee =e;
Myemployee->salary= newSalary;

这样,两个变量都将指向同一个对象。

于 2012-05-23T12:25:30.770 回答
3
void raiseSalary(Employee* e, double newSalary){
    e->salary= newSalary;
    }

在您的代码中,您创建结构的本地副本,并且仅更改此本地副本。

于 2012-05-23T12:25:07.267 回答
1

假设您在调用方分配了内存,它应该是:

e->salary= newSalary;
于 2012-05-23T12:26:24.540 回答