В первом случае struct
является безымянным, а Employee
является переменной этой безымянной структуры.Вы можете напрямую изменить его следующим образом:
int main()
{
Employee.Age = 100;
return 0;
}
Во втором случае EmployeeType
- это просто тип, но вы еще не сделали ни одного экземпляра.Вы можете сделать любое количество экземпляров:
int main()
{
struct EmployeeType a; // employee on the stack
a.Age = 100;
struct EmployeeType *b = malloc(sizeof(struct EmployeeType)); // employee on the heap
if (b) { // set the age of b if the allocation succeeded
b->Age = 100;
}
free(b); // malloc-allocated memory must be freed afterwards
return 0;
}
Вы можете даже сделать и то и другое одновременно:
struct EmployeeType
{
char Name[25];
int
Age;
float SkillRating;
} Employee;
Здесь Employee
является одним его экземпляром, но вы можете сделать дополнительныеэкземпляры:
int main()
{
Employee.Age = 100;
struct EmployeeType a; // employee on the stack
a.Age = 100;
return 0;
}