------------------结构体、-------------------------
不同类型数据类型的汇聚;
匿名结构体:只能在定义结构体的时候定义结构体变量;
struct{
int a;
char name[];
}a,b;
有名结构体:
struct STU{
int a;
char name[];
}a,b;//也可以在定义结构体的时候定义结构体变量;
STU a,b;//也可以在者定义结构体变量;
别名结构体:
struct STU{
int age;
char name[20];
};
typedef STU student;//student是别名;
student a,b;//定义结构体变量;
student *p;//结构体指针结构体变量:
struct STU a={10,“abc”};//定义变量的时候初始化;
先定义,再赋值:struct STU a;
strcpy(a.name,"xiaoming");//注意不能用等号复制字符串;
a.age=20;
结构体成员的引用有两种方式:方式一:结构体的成员运算符是 .
方式二:指针索引-> struct STU a,*p;
p=&a;
p->id=10;
strcpy(p->name,"ddd");
结构体地址从低到高连续存储;首成员对应低地址;结构体的大小是成员大小爱相加,但是注意最小整数对齐和四字节原则;
相同类型的结构体可以用等号直接赋值,数组不能用=直接赋值,
----------------联合共用体、-------------------
使用不同类型的变量共用一块内存,可以相互覆盖;此共用体大小为元素中最大字节变量;
union tem{
int age;
chat sex;
char *name;
}
公用内存,同一时刻只能解释为一种类型;
union tem a,b;
a.age=10;
strcpy(a.name,"ddd");
-----------------枚举、-----------------------------
枚举是常量;c语言在编译的时候,按定义的属性给他们的值定为0,1,2,3.。。。
enum item {red,black,blue,white};
enum item c1;
c1=blue;//值为2,red为0(如果red开始就赋值为10,blue就是12);取值范围在定义的几个值中;
---------------typedef和#define-------------
typedef char *newtype;----别名
newtype p1,p2,p3;
#define newtype char*-----------------只是简单的替换;