导读:结构体是C语言中常用的特性,很多结构体在定义的时候通常都希望对其成员赋予初始值。但不少的朋友都是选择创建一个所谓的Init函数,在其中对结构体成员成员进行挨个赋值,此类做法显得十分的不专业。所以,本篇文章将会简要介绍一下常用的结构体初始赋值的操作,希望能对大家有所帮助!
#include
typedef u_int8_t u8;
typedef u_int16_t u16;
typedef u_int32_t u32;
typedef enum
{
Harry,
Jack,
Jane,
Name_End
}e_Name;
typedef struct
{
u8 age;
u16 weight;
u8 Height;
}st_Test;
/*如下所示,类似于数组一样的初始赋值*/
st_Test gstNameList[Name_End] =
{
{17,120,166},
{21,133,172},
{26,140,185}
};
int main(void)
{
u8 u8Index = 0;
for(u8Index = 0; u8Index < Name_End; u8Index++)
{
printf("age :%d, weight:%d,Name:%d\n",gstNameList[u8Index].age,gstNameList[u8Index].weight,gstNameList[u8Index].Height);
}
}
运行后输出如下结果,可见该方法是可以完成结构体的初始值赋值动作,但该方法的弊端就是不直观,与结构体数组成员必须呈现顺序对应关系,否则会赋值错误,且无法直观的看到是给哪一个成员进行赋值。
方法2:结构体成员挨个赋值
st_Test gstNameList[Name_End] =
{
[Jane].age = 26 ,[Jane].weight = 140, [Jane].Height = 185,
[Harry].age = 17, [Harry].weight = 120, [Harry].Height = 166,
[Jack].age = 26,[Jack].weight = 140,[Jack].Height = 172
};
但是,此类的赋值方式需要每个数组成员的结构体成员都要罗列出来挨个赋值,虽然很直观每个量的具体赋值情况,但代码也显得臃肿。
st_Test gstNameList[Name_End] =
{
[Jane] = {26,140,185},
[Harry] = {17,120,166},
[Jack] = {21,133,172},
};*
END
→点关注,不迷路←