struct date{
int month;
int day;
int year;
};
struct employee{
struct nmadtype nameaddr;
int salary;
struct date datehired;
};
struct employee e[3];
for(i=0;i<3;i++)
struct employee e[i].datehired={2,2,16};
我想初始化员工通过datehired变量雇用的日期,但我不想单独初始化struct date的每个成员(如e [i] .datehired.month = 2)所以我尝试了最后一步但它是给出编译错误,因此如果我的3名员工有不同的雇用日期,那么plz建议一种方法甚至可以工作。
答案 0 :(得分:3)
您尝试执行的操作是分配,而不是初始化,这就是它失败的原因。在定义变量时完成初始化。
你可以做的是使用复合文字:
e[i].datehired = (struct date){2, 2, 16};
这将创建一个struct date
类型的临时变量,并将其值成员分配给赋值的左侧。
答案 1 :(得分:0)
您可以使用带有init值的struct date
变量来执行此操作:
#include <stdio.h>
struct date{
int month;
int day;
int year;
};
struct employee{
struct date datehired;
};
int main(void)
{
struct employee e[3];
struct date initVal= {2,2,16};
for(size_t i=0;i<sizeof(e)/sizeof(e[0]);i++){
e[i].datehired=initVal;
}
}
#include <stdio.h>
struct date{
int month;
int day;
int year;
};
struct employee{
struct date datehired;
};
int main(void)
{
struct employee e[3];
for(size_t i=0;i<sizeof(e)/sizeof(e[0]);i++){
e[i].datehired=(struct date){2,2,16};;
}
}
最简单的基本代码是
#include <stdio.h>
struct date{
int month;
int day;
int year;
};
struct employee{
struct date datehired;
};
int main(void)
{
struct employee e[3];
for(size_t i=0;i<sizeof(e)/sizeof(e[0]);i++)
{
e[i].datehired.month = 2;
e[i].datehired.day = 2;
e[i].datehired.year = 16;
}
}