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 に答える