构造类型

构造类型



结构体类型

构造结构体类型

struct 结构体类型名
{
成员1的定义;
成员2的定义;
……
成员n的定义;
};
注:

  • 定义成员的方式与定义普通变量的方式一样
  • 成员列表必须用一对花括号括起
  • 结构体名可以省略

定义结构体变量:

  • 先构造结构体类型名再定义结构体变量
  • 在构造结构体类型的同时可以定义结构体变量
  • 类型、变量同时定义,结构体类型名省略


注:

  • 结构体变量在内存中占用字节数为各成员占用字节数的总和


结构变量的初始化及引用:

  • 在定义结构体变量的同时可以将各成员的初值按顺序放在一对花括号中,来进行对结构体变量的初始化,
  • 若初值个数多于成员个数则出错,若初值个数少于成员个数,则多于成员自动赋0
  • 结构体变量不能整体引用,只能引用它的成员。

引用结构体成员的方式:

结构体变量名.成员名
其中(.)为成员运算符
运算符等级从1--15  ()、.、[ ]、->均为一级运算符


指向结构体数据类型的指针

访问结构体变量的成员的三种方法:

  1. 变量名+.
  2. 指针名+->
  3. (*指针名)+.

指向结构体数组的指针



链表

链表是一种数据结构,采用动态分配单元方式,能够有效地节省存储空间,同数组相比。
链表都有一个“头指针”变量,用于指向链表中的第一个元素(即用于存放链表中的第一个元素的地址)
链表中的元素称为“结点”,链表中所有结点都是结构体类型,且同一链表中的结点都是同一结构体类型,
每个结点都应包括数据部分和下个结点地址两部分内容。;链表的最后一个元素(结点)称为链尾
它不在指向其他结点(即该结点的指针成员值为null)
链表的访问都是通过指针变量从头结点开始


定义:

struct 结构体名
{
定义数据成员;
struct 结构体名 *指针变量;------存的是指向与自己相同类型的地址,所以该指针变量应该是结点类型
}

动态存储分配函数<stdlib.h>

malloc()函数
格式:malloc(size)
作用:是在内存的动态存储区中分配一个长度为size个字节的连续空间,函数返回值为一个指向分配域
起始地址的指针,若分配失败会返回为null。
free()函数
格式:free(p);
作用是释放malloc()分配的内存。

链表操作:
建立动态链表()
访问链表---p等于head,p不等于null,p等于p的next


共用体类型

共用体中的所有成员共用同一段内存(所以成员的起始地址都是一样的)
格式:
union 共用体名
{
成员列表;
};
注:

  • 定义成员的方式与定义普通变量的方式一样
  • 成员列表必须用一对花括号括起
  • 共用体名可以省略

共用体变量的定义

先定义类型,再定义变量
定义类型的同时,定义变量
直接定义变量,省略共用体类型名

注:

  • 由于共用体类型变量的所有成员都共用一段内存,所以共用体类型变量所占的字节数等于该共用体
  • 类型中占用字节数量最多的成员所占的字节数。

共用体变量的引用

注:

  • 不能整体引用共用体变量,只能引用其成员。格式: 共用体变量名.成员名
  • 同类型成员共享值
  • 在内存中整型数据的二进制数低8位占用前面一个字节,高8位占用后面一个字节。
  • 共用体变量之间可以相互赋值,赋值后两个变量应使用同一成员
  • 共用体变量的地址与各成员的地址都相同的
  • 在定义共用体时,可以对其进行初始化,但只能有一个初值且必须用 花括号将初值括起,相当于给第一个成员赋值
  • 共用体、结构体的成员均可以是共用体或结构体类型
  • 不能用共用体类型变量座位函数参数
  • 计算共用体占用字节数为占用字节数量最多的成员所占的字节数

typedef

功能:
typedef用来定义新的类型名来代替已有的类型名
格式:
typedef 已有类型名 新的类型名;
注:

  • typedef可用于定义各种类型名,但是不能定义变量
  • typedef只能对已经存在的类型名取个别名,而不是创造新类型。

猜你喜欢

转载自blog.csdn.net/weixin_42734520/article/details/81481447