今日主要学习了结构体与链表
结构体
定义结构体类型的方法
1.先声明结构体类型再定义变量名
定义了一个结构体类型 struct student,可以用它来定义变量。
2.在声明类型的同时定义变量
例如
3.直接定义结构体类型变量
注意
(1)类型与变量是不同的概念,不要混同。只能对变量赋值、存取或运算,而不能对一个类型赋值、存取或运算。在编译时,对类型是不分配空间的,只对变量分配空间。
(2)对结构体中的成员(即“域”),可以单独使用,它的作用与地位相当于普通变量。
(3)成员也可以是一个结构体变量
(4)成员名可以与程序中的变量名相同,二者不代表同一对象。例如,程序中可以另定义一个变量 num,它与 struct student 中的 num是两回事,互不干扰。
在定义的时候我们可以只初始化一个,而其他的成员则为0;
在定义结构体是会有结构体对齐
在系统内,计算机会为了代码的读取等提高效率,会将变量等四个四个一读,而在存放时也会特意在地址能被4整除的地址存放首个元素,若是出现在定义结构体中出现先定义short,后定义int,则结构体的字节为8,首个short为2字节,而int为4字节,计算机不会把int型变量直接存在short后面,而是在往后2个字节在存放,为的是提高读取效率,而float,double等存放时,都会按照自己的字节数进行存放,在能被自己字节数整除的地址存放。,而对于数组,则是直接会按照其基类型对齐,例如char 【100】; 存放时只需存在能被1整除的地址,也就是哪里都可以。
结构体变量的引用
(1)不能将一个结构体变量作为一个整体进行输入和输出
(2)如果成员本身又属一个结构体类型,则要用若干个成员运算符,一级一级地找到最低的一级的成员。只能对最低级的成员进行赋值或存取以及运算。
(3)对结构体变量的成员可以像普通变量一样进行各种运算(根据其类型决定可以进行的运算)。
(4)可以引用结构体变量成员的地址,也可以引用结构体变量的地址
结构体变量的初始化
和其他类型变量一样,对结构体变量可以在定义时指定初始值
结构体数组
定义结构体数组
例如
结构体数组初始化
例如
指向结构体类型数据的指针
有三种形式
结构体变量.成员名
(*p).成员名
P->成员名
指向结构体数组的指针
注意
(1)如果p的初值为stu,即指向第一个元素,则1后p就指向下一个元素
用结构体变量和指向结构体的指针作函数参数
(1)用结构体变量的成员作参数。
(2)用结构体变量作实参。用结构体变量作实参时,采取的也是“值传递”的方式,将结构体变量所占的内存单元的内容全部顺序传递给形参,形参也必须是同类型的结构体变量。在函数调用期间形参也要占用内存单元。
(3)用指向结构体变量(或数组)的指针作实参,将结构体变量(或数组)的地址传给形参。
用指针来处理链表
链表是一种常见的重要的数据结构。它是动态地进行存储分配的一种结构。
建立一个链表
对这个空链表进行头插
链表的打印
计算链表里的节点
判断链表是否为空