をクラッシュ:C通過(ポインタ)が、私はこのコードを持っている
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct employee {
char *name;
double salary;
} employee;
void new_employee (employee *person, char *name, double salary) {
person = malloc(sizeof(employee));
person->name = malloc(strlen(name) + 1);
strcpy(person->name, name);
person->salary = salary;
printf("Employee: name=%s salary=%f\n", person->name, person->salary);
}
int main(int argc, char *argv[])
{
employee *bob = 0;
new_employee(bob, "Bob Doe", 1000);
printf("Employee: name=%s salary=%f\n", bob->name, bob->salary);
return 0;
}
を私が間違っているかわからないんだけど、私はnew_employeeで構造体を使用することができますが、私はそれを使用しようとすると、それが壊れますメインから基本的に最初のprintfが動作し、2番目のprintfがクラッシュします。私はメインがボブを更新していないと思うが、私はポインタを使用しているので、参照渡しする必要があります。
変更者、すなわち '従業員* new_employee(...){...戻り者を返すようにnew_employee機能。 } ' –