构造类型:用已有的数据类型,构造一下
struct a {数据类型 名字 ….};
struct a t1;
struct a{数据类型 名字…}t1,t2;
先定义结构体,后定义结构体变量
定义结构体的同时定义结构变量
struct{};匿名定义结构体变量
定义的同时初始化,最好强转一次,以免初始化时出错
先定义后赋值:(变量名).数据类型 = 数据值
一边定义一边赋值:struct 结构体名 变量名={数据值};
int a=0;sizeof(int)=sizeof(a)=sizeof(3);
模=结构体中占字节最大的那个数,存放时 内存对齐
所有类型都遵守前面空余字符是自身倍数的原则
sizeof(strcut 结构体变量名);即可算出结构体的大小
结构体数组,每个元素都是一个数组
struct 数组名[i]={{…},{…}};
使用某项数据时,数组名[i].数据类型
struct Moon moon1;
struct Moon * moon = &moon1;
(*moo).数据类型 或者 moon—>数据类型(指针的间接访问,但需要是指针才行)
结构体的嵌套,一个结构体中有另一个结构体
若结构体嵌套的结构体嵌套结构体,则结构体.结构体变量名={。。,。。,{}};
先定义后赋值为动态初始化,动态初始化只有一种方式,挨个赋值 ‘ ‘字符 “ “字符串 所以 字符数组和字符串数组不同
对于结构体里的char * a;需为其申请空间或者将其改成数组,否则会发生给野指针赋值,导致结果错误。
在结构体中不能给变量初始化