struct 定义:
struct test
{
int a;
long b;
float c;
char d;
char e[];
}tt1,tt2;//对象声明列表紧跟struct定义
struct test tt3,tt4;//单独声明对象列表
//声明一个没结构体名字的结构体
struct
{
int a;
long b;
float c;
char d;
char e[3];
}tt1={2,3,3.2,'c',"tyu"},tt2={2,3,3.2};//必须顺序赋值,但可以不赋值所有成员
struct初始化:
1,//按顺序初始化
struct test t1={1,2,1.23,'h',"gsdhf"};
2,//乱序
struct test t2=
{
.a=1,
.b=2,
.c=1.23,
.d='h',
.e="gsdhf"
};
注意:
1,如果存在部分成员没初始化,一般值是系统默认值。
2,如果即存在乱序又存在顺序初始化,顺序初始化始终紧跟上一个乱序成员,即该顺序赋值给上一个乱序成员的下一个成员。如:
struct test tt=
{
.c = 18.90,
.b= 2,
0.25 //成员之间赋值时是","分开,不是";",且最后一个成员没有","
};
0.25的值将付给成员b后的那个成员c,即之前给c赋值18.90将被0.25取代。
当然如果顺序赋值前无乱序赋值,则按struct定义成员的顺序进行赋值,后面的乱序赋值则覆盖前面的顺序赋值。
自定义struct 类型
typedef struct test
{
int a;
long b;
float c;
char d;
char e[];
};
test tt;//test现在是自定义数据类型了,和int,char等数据类型的使用是一样的
tt=
{
.a=1,
.b=2,
.c=1.23,
.d='h',
.e="gsdhf"
};
注意:也可先定义struct test,然后使用语句typedef struct test tt;或者typedef struct test;test tt;来自定义struct数据类型并声明对象。