C语言之复合类型结构:结构体、联合共用体、枚举、typedef

------------------结构体、-------------------------

不同类型数据类型的汇聚;

匿名结构体:只能在定义结构体的时候定义结构体变量;

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*-----------------只是简单的替换;

猜你喜欢

转载自blog.csdn.net/u011146511/article/details/80531732