C:通过引用传递结构

标签 c reference

我定义了以下结构:

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/

相关文章:

c - 为什么 XOpenDisplay() 不会因错误的显示名称而失败

c - 导致段错误的指针和字符串

Java新手: How to assign current state of object to another,没有建立引用?

.net - VB.NET 2K8 : How to make all imports visible within a class?

c - 在 Eclipse 中编译简单的 HDF5 示例时获取 ‘undefined reference to’

c - c 和 java 中的输出 AES/ECB/PKCS7 不相同

c - 数字信封例程:EVP_DecryptFinal_ex:wrong final block length:evp_enc in C program

sql-server - SQL Server 中 ADSI 链接的可用字段

c++ - 编译器可以将对常量参数的引用优化为常量值吗?

mysql - 更新日期作为触发器的一部分?