C语言构造类型演示文稿

上传人:太丑****片 文档编号:292442664 上传时间:2022-05-14 格式:PPT 页数:58 大小:2.79MB
返回 下载 相关 举报
C语言构造类型演示文稿_第1页
第1页 / 共58页
C语言构造类型演示文稿_第2页
第2页 / 共58页
C语言构造类型演示文稿_第3页
第3页 / 共58页
C语言构造类型演示文稿_第4页
第4页 / 共58页
C语言构造类型演示文稿_第5页
第5页 / 共58页
亲,该文档总共58页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《C语言构造类型演示文稿》由会员分享,可在线阅读,更多相关《C语言构造类型演示文稿(58页珍藏版)》请在金锄头文库上搜索。

1、C语言构造类型演示(y (y nsh)nsh)文稿1页,共58页,星期日。第八章 构造类型 8.1 概述概述 8.2 结构体结构体 8.3 定义结构体类型变量的方法定义结构体类型变量的方法定义结构体类型变量的方法定义结构体类型变量的方法 8.4 结构体变量的引用结构体变量的引用(y (ynyng)nyng) 8.5 结构体变量的初始化结构体变量的初始化 8.6 结构体数组结构体数组 8.7 指向结构体类型数据的指针指向结构体类型数据的指针 8.8 链表链表 8.9 共用共用( ( nn yn yn ) )体体 8.10 枚举类型枚举类型8.11 自定义类自定义类型标识符型标识符 2页,共58页

2、,星期日。8.1 概述概述( ( i sh)i sh)在前面学习了一些基本的数据类型(也在前面学习了一些基本的数据类型(也叫简单类型),如整型、实型、字符型等,叫简单类型),如整型、实型、字符型等,这些类型都是系统定义好的,程序员可以直这些类型都是系统定义好的,程序员可以直接拿来使用接拿来使用(sh(shyng)yng)。对于复杂的客观实体的定义,系统没有对于复杂的客观实体的定义,系统没有提供。例如一个学生的学号、姓名、性别、提供。例如一个学生的学号、姓名、性别、出生日期、学习成绩、家庭住址等属性的整出生日期、学习成绩、家庭住址等属性的整体描述。体描述。 返返回回3页,共58页,星期日。C语言

3、提供了自定义数据类型的方法,通过语言提供了自定义数据类型的方法,通过自定义类型将不同类型的数据组合成一个有自定义类型将不同类型的数据组合成一个有机的整体,这些数据在一个整体中是互相联机的整体,这些数据在一个整体中是互相联系的。系的。这种自定义的数据类型叫构造类型。这种自定义的数据类型叫构造类型。 实际上在前面已经实际上在前面已经(y (y jing) jing)学习了一种构造类型学习了一种构造类型数组,数组是具有相同数据类型的一组数组,数组是具有相同数据类型的一组元素集合。除了数组之外还有结构体、共用元素集合。除了数组之外还有结构体、共用体。体。8.1 概述概述( ( i sh)i sh)4页

4、,共58页,星期日。8.2 结构结构(jigu)(jigu)体体结构体类型结构体类型(lixng)(lixng)就是将不同类型就是将不同类型(lixng)(lixng)的数的数据组合成一个有机的整体,以便于引用。据组合成一个有机的整体,以便于引用。 一个学生的属性:学号(一个学生的属性:学号(一个学生的属性:学号(一个学生的属性:学号(numnum)、姓名)、姓名)、姓名)、姓名(name)name)、性别(、性别(、性别(、性别(sex)sex)、年龄(、年龄(、年龄(、年龄(age)age)、成绩、成绩、成绩、成绩(score)score)、家庭住址、家庭住址、家庭住址、家庭住址(addr

5、)(addr)返返回回5页,共58页,星期日。C语言没有提供这种现成的数据类型,因此语言没有提供这种现成的数据类型,因此用户必须要在程序中建立所需的结构用户必须要在程序中建立所需的结构(jigu)(jigu)体体类型。类型。 声明一个结构体类型的一般形式为:声明一个结构体类型的一般形式为:8.2 结构结构(jigu)(jigu)体体6页,共58页,星期日。以学生实体以学生实体(sht(sht) )为例,建立一个结构体类型:为例,建立一个结构体类型: 8.2 结构结构(jigu)(jigu)体体struct student int num; char name20; char sex; int

6、age; float score; char addr30;7页,共58页,星期日。声明声明(shngmng)(shngmng)了一个叫了一个叫student的结构体类型,的结构体类型,它包括它包括num、name、sex、age、score、addr等不同类型的数据项。等不同类型的数据项。注意注意 :(1 1)结构体类型名为:)结构体类型名为:)结构体类型名为:)结构体类型名为:struct studentstruct student,其中,其中,其中,其中structstruct是定义结构体类型的关键字,用来定义变是定义结构体类型的关键字,用来定义变是定义结构体类型的关键字,用来定义变是定

7、义结构体类型的关键字,用来定义变量的类型。量的类型。量的类型。量的类型。 (2 2)在)在)在)在 中定义的变量我们叫做成员,其定义方中定义的变量我们叫做成员,其定义方中定义的变量我们叫做成员,其定义方中定义的变量我们叫做成员,其定义方法和前面变量定义的方法一样,只是不能忽略法和前面变量定义的方法一样,只是不能忽略法和前面变量定义的方法一样,只是不能忽略法和前面变量定义的方法一样,只是不能忽略最后的分号。最后的分号。最后的分号。最后的分号。 8.2 结构结构(jigu)(jigu)体体8页,共58页,星期日。必须遵循先声明结构体类型,再定义结构体必须遵循先声明结构体类型,再定义结构体变量的原则

8、变量的原则(yunz)(yunz)。三种定义结构体变量的方法:三种定义结构体变量的方法: (1 1)先声明结构体类型再定义结构体变量名)先声明结构体类型再定义结构体变量名)先声明结构体类型再定义结构体变量名)先声明结构体类型再定义结构体变量名 格式如下:格式如下:格式如下:格式如下: 8.3 定义结构体类型定义结构体类型(lixng)(lixng)变量的方变量的方法法 返返回回9页,共58页,星期日。8.3 定义定义(dngy)(dngy)结构体类型变量的方结构体类型变量的方法法 例如例如例如例如(lr)(lr):struct student int num; char name20; cha

9、r sex; int age; float score; char addr30; ; struct student stu1,stu2; 10页,共58页,星期日。说明:说明:说明:说明:定义结构体变量时,结构体类型名中的定义结构体变量时,结构体类型名中的定义结构体变量时,结构体类型名中的定义结构体变量时,结构体类型名中的structstruct不不不不能省,不能变成能省,不能变成能省,不能变成能省,不能变成 :student stu1,stu2student stu1,stu2。(2 2)在声明类型的同时)在声明类型的同时)在声明类型的同时)在声明类型的同时(tngsh)(tngsh)定义

10、变量定义变量定义变量定义变量 格式如下:格式如下:格式如下:格式如下: 8.3 定义定义(dngy)(dngy)结构体类型变量的方法结构体类型变量的方法 11页,共58页,星期日。例如例如例如例如(lr)(lr):8.3 定义结构体类型变量定义结构体类型变量(binling)(binling)的方的方法法 struct student int num; char name20; char sex; int age; float score; char addr30; stu1,stu2; 12页,共58页,星期日。(3 3)直接定义结构类型变量)直接定义结构类型变量)直接定义结构类型变量)直接

11、定义结构类型变量(binling)(binling) 格式如下:格式如下:格式如下:格式如下: 8.3 定义结构体类型定义结构体类型(lixng)(lixng)变量的方法变量的方法 其特点是在声明时不出其特点是在声明时不出现结构体名。现结构体名。 例如例如 :struct int num; char name20; char sex; int age; float score; char addr30; stu1,stu2; 13页,共58页,星期日。关于结构体类型说明关于结构体类型说明关于结构体类型说明关于结构体类型说明 :类型与变量是两个不同的概念,不能混淆。变类型与变量是两个不同的概念,

12、不能混淆。变类型与变量是两个不同的概念,不能混淆。变类型与变量是两个不同的概念,不能混淆。变量分配内存空间,类型不分配空间。量分配内存空间,类型不分配空间。量分配内存空间,类型不分配空间。量分配内存空间,类型不分配空间。 对结构体中的成员可以对结构体中的成员可以对结构体中的成员可以对结构体中的成员可以(ky(ky) )单独使用,相当于普单独使用,相当于普单独使用,相当于普单独使用,相当于普通变量,引用方法后面具体讲述。通变量,引用方法后面具体讲述。通变量,引用方法后面具体讲述。通变量,引用方法后面具体讲述。 结构体中成员也可以是一个结构体变量。结构体中成员也可以是一个结构体变量。结构体中成员也

13、可以是一个结构体变量。结构体中成员也可以是一个结构体变量。 8.3 定义结构体类型定义结构体类型(lixng)(lixng)变量的方法变量的方法 14页,共58页,星期日。struct date int month; int day; int year; ; struct student int num; char name20; char sex; int age; struct date birthday;/*birthday是struct date类型(lixng)*/ char addr30; stu1,stu2; 15页,共58页,星期日。引用结构体变量要遵守如下规则:引用结构体变量

14、要遵守如下规则: (1 1)不能将一个)不能将一个)不能将一个)不能将一个(y (y )结构体变量作为一个结构体变量作为一个结构体变量作为一个结构体变量作为一个(y (y )整整整整体进行输入输出(引用),而只能对结构体变体进行输入输出(引用),而只能对结构体变体进行输入输出(引用),而只能对结构体变体进行输入输出(引用),而只能对结构体变量中的各个成员分别进行输入和输出(引用)。量中的各个成员分别进行输入和输出(引用)。量中的各个成员分别进行输入和输出(引用)。量中的各个成员分别进行输入和输出(引用)。结构体变量成员引用格式:结构体变量成员引用格式:结构体变量成员引用格式:结构体变量成员引用

15、格式: 8.4 结构体变量结构体变量(binling)(binling)的引用的引用 “ “.” .”是成员(又叫分量)运算符,它的优先级是成员(又叫分量)运算符,它的优先级是成员(又叫分量)运算符,它的优先级是成员(又叫分量)运算符,它的优先级最高。例如最高。例如最高。例如最高。例如 stu1.num=10001;stu1.num=10001; 返返回回16页,共58页,星期日。(2 2)如果成员本身又属于一个结构体类型,则要)如果成员本身又属于一个结构体类型,则要)如果成员本身又属于一个结构体类型,则要)如果成员本身又属于一个结构体类型,则要用若干个成员运算符,一级一级地找到最低一用若干个

16、成员运算符,一级一级地找到最低一用若干个成员运算符,一级一级地找到最低一用若干个成员运算符,一级一级地找到最低一级的成员。只能对最低的成员进行赋值或存取级的成员。只能对最低的成员进行赋值或存取级的成员。只能对最低的成员进行赋值或存取级的成员。只能对最低的成员进行赋值或存取以及运算。以及运算。以及运算。以及运算。 例如:例如:例如:例如: stu1.birthday.year=1983; stu1.birthday.year=1983; (3 3)对结构体变量成员可以像普通变量一样进行)对结构体变量成员可以像普通变量一样进行)对结构体变量成员可以像普通变量一样进行)对结构体变量成员可以像普通变量一样进行各种各种各种各种( ( zh zhn n ) )运算。运算。运算。运算。 例如例如例如例如:stu1.num+; stu1.num+; stu1.age+=2; stu1.age+=2; (4 4)可以引用结构体变量成员的地址。也可以引)可以引用结构体变量成员的地址。也可以引)可以引用结构体变量成员的地址。也可以引)可以引用结构体变量成员的地址。也可以引用结构体变量的地址。用结构体变量的地

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 心得体会

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号