四根羽毛i

导航

结构体、共用体、枚举类型、typedef梳理

一、先声明类型名,再定义类型的变量(也可以不写出类型名)

一般结构:

   struct 结构体名//可省略

  { 成员名1;

  成员名2;

  ......}变量名1,变量名2,......;

初始化时字符串用“”,字符用‘’。

对成员名赋值 :变量名.成员名=........;

 

结构体成员为字符数组时,从键盘通过scanf获取值无需使用取地址符号。普通成员须使用&符号。

结构体数组的定义:

struct 结构名{

成员表列;

}数组名[长度]={初始化表列};

定义结构体指针:

struct 类型名 *指针;

指针=&类型名;

(*p)表示的是p指向的指针变量,(*p).num代表的是结构体变量的成员num。

 

成员运算符“.”优于"*",*p.num等价于*(p.num)。

.运算符优先级最高

如果p指向一个结构体变量stu,以下三种用法等价:


stu.成员名

(*p).成员名

p->成员名

 

二、共用体

共用体内存占用的长度等于成员表列中最长的那个,

(使用sizeof函数对其中任意定义变量求字节数都为最长者)

共用体初始化时只能有一个变量(因为每个变量占用的是同一内存单元),

且最后一次被赋值的成员的值为最终值。

结构体和共用体可以

互相嵌套;

三、枚举类型

定义:

enum 枚举名{ 成员列表(中间用逗号隔开)};

无定义的元素复赋值规则:

首元素为0,其余根据已赋值的成员左减右加

 

四、typedef 可以声明新类型:

1.用新名字代替原来的名字(区别于define,#define适用于宏定义在函数之前)

2.将复杂的类型名变简单一点:

(1)命名一个新类型名代替结构体;

tyedef 结构体类型名{

成员列表;

}新类型名;

(2)数组,指针,库函数都可以换新名字使用;

 

posted on 2020-11-25 10:24  四根羽毛i  阅读(110)  评论(0)    收藏  举报