我已经定义了以下结构:
typedef struct {
double salary;
} Employee;
Run Code Online (Sandbox Code Playgroud)
我想改变它的价值salary.我尝试通过引用传递它,但值保持不变.以下是代码:
void raiseSalary (Employee* e, double newSalary) {
Employee myEmployee = *e;
myEmployee.salary = newSalary;
}
Run Code Online (Sandbox Code Playgroud)
当我调用此函数时,salary保持不变.我究竟做错了什么?
您正在传递指向原始的指针,但随后您创建了它的副本:
Employee myEmployee =*e;
Run Code Online (Sandbox Code Playgroud)
创建一个副本.
e->salary = newSalary;
Run Code Online (Sandbox Code Playgroud)
会做的.或者,如果您出于某种原因必须有一个辅助变量:
Employee* myEmployee =e;
Myemployee->salary= newSalary;
Run Code Online (Sandbox Code Playgroud)
这样,两个变量都将指向同一个对象.
| 归档时间: |
|
| 查看次数: |
3155 次 |
| 最近记录: |