成都理工大学鲁红英授课提纲结构体类型结构体数组结构体指针变量结构体与函数共用体用typedef定义类型链表结构体类型∮在以前章节中我们学习了基本的数据类型(整型、实型、字符型)和一种构造类型:数组,它是由同一种类型的数据构成的,能否将不同类型的数据也组成一个整体呢?学号姓名数学物理英语计算机张红85909288王建90959590王炼76788070李立56366697刘虹78798789结构体类型:指集不同数据类型为一体的数据类型。定义结构体类型的一般形式为:struct结构体名 {类型名1结构体成员名1;类型名2结构体成员名2; ┇ };成员列表结构体类型structstudent{charnum[10];charname[20];floatscore[4];};结构体类型学号姓名数学物理英语计算机张红85909288王建90959590王炼76788070李立56366697刘虹78798789注意:1、结构体定义仅仅是说明构成结构体类型的数据结构,并没有在内存中为此开辟存储空间。只有当定义了结构体变量后,编译程序才为其分配相应的内存空间。结构体类型2、结构体成员也可以是结构体类型。structdate{intmonth;intday;intyear;};structperson{charname[20];structdatebrithday;};直接定义:定义结构体类型时定义结构体变量。结构体变量的定义(一)结构体名字结构体变量的名字structstudent{charnum[10];charname[20];floatscore[4];intage;}p1,p2,p3;例如:定义student结构体类型时,定义3个存放学生记录的结构体变量。 间接定义:先定义结构类型,再定义结构变量。结构体变量的定义(二)结构体名字结构体变量的名字structstudent{charnum[10];charname[20];floatscore[4];intage;};structstudentp1,p2,p3;例如:先定义student结构体类型,再定义3个存放学生记录的结构体变量。 一次性直接定义:定义无名结构体类型时定义结构体变量。结构体变量的定义(三)无结构体名字结构体变量的名字struct{charnum[10];charname[20];floatscore[4];intage;}p1,p2,p3;例如:定义无名结构体类型同时定义3个存放学生记录的结构体变量。 注意:1、结构体名只代表结构体的数据结构,程序中只能使用结构体变量传递信息。2、当定义了结构体变量后,编译程序会按成员的说明顺序分配相应的内存空间。结构体类型例如:p1变量的存储空间为:10+20+16+4=50(字节)结构体变量成员的引用:当定义好结构体变量后,就可以使用“.”操作符来引用结构体变量的成员。其引用方式为:结构体变量名.成员名例如:p1.namep1.age结构体类型(成员的引用)结构体变量成员的引用规则:1、不能将一个结构体变量作为一个整体进行输入输出。只能引用结构体变量的各个成员。2、可以把一个结构体变量赋给另一个结构体变量,即进行整个结构体的复制。例如:p2=p1;3、如果结构体成员本身又是一结构体类型,应采用逐级访问方法,一级一级地找到最低的一级成员。结构体类型(成员的引用)例:读程序,理解结构体变量的输入与输出。#includestdio.hintmain(void){structstudent