结构体数据类型与链表.ppt
《结构体数据类型与链表.ppt》由会员分享,可在线阅读,更多相关《结构体数据类型与链表.ppt(45页珍藏版)》请在三一办公上搜索。
1、C语言程序设计教程,1,2023/6/25,9.1 结构体类型的定义9.2 结构体类型变量9.3 结构体类型数组9.4 结构体类型指针9.5 结构体与函数9.6 链表,第九章 结构体数据类型与链表,C语言程序设计教程,2,2023/6/25,9.1 结构体类型的定义,1.结构体类型的定义 struct 结构体名 类型标识符1 成员名1;类型标识符2 成员名2;类型标识符n 成员名n;;struct 结构体名 结构体类型名,结构体是由C语言中的基本数据类型构成的、并用一个标识符来命名的各种变量的组合,其中可以使用不同的数据类型。,C语言程序设计教程,3,2023/6/25,2、关于结构体类型的说
2、明:“struct 结构体名”是一个类型名,它和int、float等作用一样可以用来定义变量。结构体名是结构体的标识符不是变量名,也不是类型名。构成结构体的每一个类型变量称为结构体成员,它象数组的元素一样,但数组中元素以下标来访问的,而结构体是按结构体变量名来访问成员的。结构体中的各成员既可以属于不同的类型,也可以属于相同的类型,而数组中的元素是属于同一类型的。成员也可以是一个结构体类型,如:,C语言程序设计教程,4,2023/6/25,struct dateint month;int day;int year;,struct personfloat num;char name20;char
3、sex;int age;struct date birthday;char address10;,C语言程序设计教程,5,2023/6/25,9.2 结构体类型变量,9.2.1 结构体类型变量的定义1.先定义结构体类型,再定义结构体变量,形式:struct 结构体名 类型标识符 1 成员名1;类型标识符2 成员名2;类型标识符n 成员名n;struct 结构体名 变量名表;,例如:struct student char name20;char sex;int age;float score;;,struct student stu1,stu2;,C语言程序设计教程,6,2023/6/25,2.
4、在定义结构体类型的同时定义变量,形式:struct 结构体名 类型标识符 1 成员名1;类型标识符2 成员名2;类型标识符n 成员名n;变量名表;,例如:struct student char name20;char sex;int age;float score;stu1,stu2;,C语言程序设计教程,7,2023/6/25,3.用匿名形式直接定义结构体类型变量,形式:struct 结构体名 类型标识符 1 成员名1;类型标识符2 成员名2;类型标识符n 成员名n;变量名表;,例如:struct char name20;char sex;int age;float score;stu1,s
5、tu2;,C语言程序设计教程,8,2023/6/25,9.2.2 结构体变量的使用,结构体是一种新的数据类型,因此结构体变量也可以象其它类型的变量一样赋值、运算,不同的是结构体变量以成员作为基本变量。结构体成员的表示方式为:结构体变量名.成员名 其中的圆点运算符称为成员运算符,它的运算级别最高。如果将结构体变量名.成员名看成一个整体,则这个整体的数据类型与结构体中该成员的数据类型相同,这样就可象前面所讲的变量那样使用,但应遵循以下规则:,C语言程序设计教程,9,2023/6/25,(1)不能将一个结构体变量作为一个整体进行输入和输出,而只能对结构体变量中的各个成员分别进行输入和输出。,stru
6、ct dateint month;int day;int year;day;scanf(“%d%d%d”,day);(错误)scanf(“%d%d%d”,(正确),C语言程序设计教程,10,2023/6/25,(2)如果成员本身又属一个结构体类型,则要用若干个成员运算符(.),一级一级地找到最底的一级的成员,只能对最底级的成员进行赋值或存取运算.,struct dateint month;int day;int year;,struct studentlong num;char name20;char sex;int age;struct date birthday;char depart10
7、;stu1;,如:stu1.birthday.year=2004;stu1.birthday.month=12;,(3)对结构体变量的成员可以像同类型普通变量一样进行各种运算。,C语言程序设计教程,11,2023/6/25,9.2.3 结构体变量的初始化与存储,结构体变量的初始化:在定义结构体变量的同时 给它赋以初值。,struct student char name20;char sex;int age;float score;stu1,stu2=“Wangwu”,m,20,88.5;,C语言程序设计教程,12,2023/6/25,2.结构体变量存储分配示意图,C语言程序设计教程,13,20
8、23/6/25,9.3 结构体数组,9.3.1 结构体数组的定义 结构体是一种新的数据类型,同样可以有结构体数组。1、结构体数组的定义 结构体数组就是具有相同结构体类型的变量集合。,假如要定义一个班级105个同学的学号、姓名、性别、年龄,可以定义成一个结构体数组。如下所示:struct long num;char name20;char sex;int age;stu105;,C语言程序设计教程,14,2023/6/25,struct student long num;char name20;char sex;int age;float score;char add5;stu3=101,”WG
9、J”,M,28,88.5,”CS”,102,”DYH”,F,26,88.0,”CS”,103,”DYC”,M,24,78.5,”CS”;,9.3.2 结构体数组变量的初始化一般形式是在定义的数组后面加上=初值表列;,数组各元素在内存中连续存放,结构体数组成员的访问是以数组元素为结构体变量的,其形式为:结构体数组元素名.成员名 如:stu2.age 结构体数组的成员也可以是数组。struct student long num;char name20;char sex;int age;float score3;char add5;stu5;,9.3.3 结构体数组的使用,例9.1 候选人得票的统计
10、。设有三个候选人,每次输入一个得票的候选人的名字,要求最后输出各人得票结果。,C语言程序设计教程,17,2023/6/25,struct person char name20;int count;leader3=Zhang,0,Li,0,Wang,0;main()int i,j;char leader_name20;for(i=1;i=10;i+)scanf(%s,leader_name);for(j=0;j3;j+)if(strcmp(leader_name,leaderj.name)=0)leaderj.count+;printf(n);for(i=0;i3;i+)printf(%5s:%
11、dn,leaderi.name,leaderi.count);,C语言程序设计教程,18,2023/6/25,9.4 结构体类型指针,一个结构体变量的指针就是该变量所占据的内存段的起始地址。可以定义一个指针变量,用来指向一个结构体变量,此时该指针变量的值是结构体变量的起始地址。,9.4.1 指向结构体变量的指针,1.指向一个结构体变量的指针定义形式:struct 结构体名*指针变量名;例如:struct student long int num;char name20;char sex;float score;,C语言程序设计教程,19,2023/6/25,2.由指向结构体的指针变量引用结构体
12、成员的形式为:(*指针变量名).成员名 或 指针变量名-成员名-为指向运算符如:上面示例用指针变量引用其成员的方式为:(*pstu).num,(*pstu).name(*pstu).sex,(*pstu).score可以等价表示为:pstu-num,pstu-name,pstu-sex,pstu-score,struct student*pstu,stu;pstu=/*不要认为结构体变量名代表起始地址*/,C语言程序设计教程,20,2023/6/25,例9.2 比较结构体成员的几种引用方式#include string.hmain()struct student long int num;ch
13、ar name20;char sex;float score;struct student stu_1;struct student*p;,C语言程序设计教程,21,2023/6/25,p=,C语言程序设计教程,22,2023/6/25,9.4.2 指向结构体数组元素的指针,一个指针变量可以指向一个结构体数组元素(将该结构体数组的数组元素地址赋给此指针变量)。例如:struct int a;float b;arr3,*p;p=arr;此时使p指向arr数组的第一个元素,“p=arr;”等价于“p=”则此时指针变量p此时指向arr1。,C语言程序设计教程,23,2023/6/25,例9.3 输出
14、数组中各元素中各成员的值。struct student int num;char name20;char sex;int age;struct student stu3=,10101,Zhang,M,18,10102,Li,M,19,10103,Wang,F,20;,main()struct student*p;printf(No.Name sex agen);for(p=stu;pnum,p-name,p-sex,p-age);,C语言程序设计教程,24,2023/6/25,指针移动示意图:,stu0,stu1,stu2,P,P,P”,20,F,Wang,10103,19,M,Li,1010
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 结构 数据类型
链接地址:https://www.31ppt.com/p-5313836.html