结构体类型:用来描述复杂数据的一种数据类型
构造类型:用户自定义数据类型
语法:
//形式1
struct 结构体名
{
成员列表;
};
eg:
struct student
{
char name[30];
int sno;
}//表示定义出一个数据类型,可以进行定义变量,定义指针变量,定义数组等操作。
注意:
1.结构体类型的使用过程
a.先定义出类型
b.再定义变量
2.定义变量
struct 结构体名 变量名;
结构体初始化:
根据各个成员的类型,按顺序依次初始化
结构体变量的引用:一般是引用到具体的成员数据
结构体变量的使用:变量名.成员名
.为成员运算符//表示 的
结构体定义类型的同时定义变量:
//形式2
struct stu
{
}s;
//形式3
struct stu
{
}s;
结构体的大小:
每个数据类型与自然边界对齐
//32位平台
超过4字节,按照4字节对齐
不超过,按照最大的字节对齐
//64位平台
超过4字节,按照最大字节对齐
整个结构体按照最大字节对齐
同类型的结构体变量之间,可以相互赋值
struct student s1;
struct student s2;
s2 = s1;
共用体:
union
语法:
union 共用体名
{
成员变量;
};
eg:
union demo
{
int a;
short b;
char c;
};
注意:
1.共用体初始化时,默认第一个值赋给共用体
2.共用体里面赋值,默认最后一个为值赋给共用体,但是还看要最后一个值能影响几个字节
3.实参给到形参,有可能要符号位拓展
对比结构体:
1.结构体中各个成员拥有自己独立空间
2.共用体中,成员共用一块空间