结构体 共同体 枚举体 typedef
结构体:
概念:结构体时一种构造数据类型
用途:把不同类型的数据组合成一个整体
内存:各成员所占内存空间的累加
关键词:struct
一.结构体的声明与定义变量的方法一共有三种:
1.常规定义:
struct AA
{
int a;
int b;
}; //注意大括号后面有分号
变量定义:struct 机构体名 结构体变量名表
如: struct AA aa,bb;(前面的struct不能掉)
成员调用:aa.a; aa.b;
2.尾部定义。
struct CC
{
int a;
int b;
}aa,bb;
此时aa,bb就是已经定义好的CC类型的变量了,这种情况在声明时struct前就一定不能加typedef,如果加上了,aa,bb就成了和CC一样的结构体类型了,而不是变量了。
3.无名结构体
struct CC
{
int a;
int b;
}vip1,vip2;
此种情况除了vip1,vip2,不能再在其他地方定义新的变量,即定义了几个就只能用几个。
不能在结构体内部直接给成员赋值:
#include<stdio.h>
//直接带变量名Huqinwei
struct stuff{
// char job[20] = "Programmer";
// char job[];
// int age = 27;
// float height = 185;
}Huqinwei;
https://yq.aliyun.com/articles/10417
共用体:
构造数据类型,也叫联合体。
用途: 使几个不同类型的数据共占一段内存(相互覆盖)
关键词:union
特点:
1共用体变量任何时候只有一个变量存在。
2,共用体变量定义分配内存,长度=最长成员所在字节数
3,定义共用体变量的方式和结构体一样有三种:常规,尾部,无名。
4,当给一个成员重复赋值时或对多个成员赋值时,只承认最后一次的赋值。
typedef:
功能:用自定义名字为已有数据类型命名(有点伪装的意思)
范围:只能针对已有数据类型使用。比如:int ,char, double,…..而define什么都可以换。
举例:
typedef int fuck;
fuck you = 2;
printf(“%d”,you) //2
枚举体
关键词:enum
用途:列举所有选项
举例:day = {Sunday,Monday,Tuesday,Wednesday,Thusday,Friday,Saturday};
结尾有分号,如果个枚举常量没有赋值,则默认值为其下标(参考一维数组),比如此时Tuesday = 2