C:通过引用传递struct

时间:2012-05-23 12:23:31

标签: c reference

我定义了以下结构:

typedef struct {
    double salary;
} Employee;

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

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

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

3 个答案:

答案 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;