C++课件:第11章结构体与共用体
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
person={“li li”,’f’, 24, “primary”,1000}; 错!
C++课件:第11章结构体与共用体
例11.2 定义一个结构体类型,包含通讯录中的如下信息: 姓名、年龄、电话、通讯地址;并定义该类型的变量, 输入数据并输出。
程序l11_2.c
#include "stdio.h" struct address_list {char name[10];
/*{}内是该类型的各成员*/
char sex;
int age;
char position[10];
float salary; };
/*语句末尾是“;” */
该结构体类型名为struct teacher,teacher 是该结构体的标识符; 该类型包含有6个成员的数据项:name、 sex、 age、 position 和salary,其中每个成员项都有自己的类型。
}; struct teacher person; /*定义结构体变量person*/
strcpy(,"wang li");
person.sex=‘f’;
/*给各成员赋值*/
person.age=30;
strcpy(person.position,"middle");
person.salary=1600;
C++第11章结构体与共用体
C++课件:第11章结构体与共用体
1、结构体类型的定义 2、结构体变量的定义及引用 3、结构体数组 4、结构体类型的指针 5、链表的基本操作 6、共用体和枚举类型(了解)
C++课件:第11章结构体与共用体
结构体类型的引入
问题:为了描述一个事物的不同属性,需要用到各种不同类 型的数据,这些数据彼此相关,形成一个有机的整体。例如: 一个教师的基本信息由姓名、性别、年龄、职称、工资等几 项组合而成。如何描述一个教师的情况呢?
将出生日期单独定义为一个结 直接嵌入。
构体类型后再嵌入。
Struct teacher_3
Struct date_type
{ char name[30];
{ int year;
char sex;
int month;
struct date_type
int day;
{int year;
};
int month;
分析: *本例中结构体类型在函数体内定义,其作用范围在本函数体内。 * 先定义结构体类型,后定义结构体变量。 * 对结构体变量输入输出操作、或将基本类型的数据赋给结构体
变量时,需分别访问各个基本类型的成员,不能整体赋值或输 入输出。 如:printf(“%s%c%d%s%f”,person); 错!
前面我们已学习过各种基本类型的变量和数组,而且我们知 道,各个变量之间是相互独立的,无任何联系;而数组只能 用来表示一批相同类型的数据。因此,若用单个变量分别表 示教师的姓名、性别、年龄等属性,则难以反映他们之间的 内在联系;若用数组,则根本无法表示,因为姓名、性别、 年龄等不属同一种数据类型。
C语言中用“结构体”来描述由多个不同类型的数据组成的数 据集合。相当于其他高级语言中的“记录”.
例11.1定义一个结构体变量,用于存放一个教师的信 息,然后将其输出。
C++课件:第11章结构体与共用体
#include "stdio.h"
main() { stБайду номын сангаасuct teacher /*该类型的作用范围在本函数内*/
{ char name[30]; char sex;
int age;
char position[10]; float salary;
} (常用)
C++课件:第11章结构体与共用体
11.2结构体变量的定义及引用
经以上定义后,结构体类型struct teacher与系统定 义的类型int、long、float 等一样,可以用它来定 义该类型的变量、数组、函数等。
不同的是:结构体类型的作用范围是有限制的。在 函数体内定义的结构体类型的作用域为本函数内, 在函数体外定义的结构体类型的作用域为本程序 文件内,若要引用不在本文件内的结构体类型, 通常用#include命令将定义该类型的文件包含进 来。
C++课件:第11章结构体与共用体
可见,定义一种新的结构体类型的一般形式是: struct 结构体类型名 {成员类型 成员名;
…… 成员类型 成员名; }; 其中,struct 是 关键字,结构体类型名、结构体成员名的命 名规则同变量的命名规则一样。 特别提示:struct teacher只是一种具体的结构体类型,根据 需要,程序员可以定义多个不同内容的结构体类型。其中的 成员项是该类型的组成部分,而不是变量。 结构体类型的成员可以是基本类型的变量或数组,也可以是结 构体类型的数据。即结构体类型的嵌套定义。 例如,若将教师的年龄改为出生日期,则可以将出生日期定义 为一个结构体类型,然C+后+课嵌件:入第11s章tr结u构ct体与te共a用c体her中。
Struct teacher_2
int day;
{ char name[30];
} birthday;
char sex;
char position[10];
struct date_type birthday;
float salary;
char position[10]; float salary;
} /*成员birthday又是一个结 构体类型的数据。*/
C++课件:第11章结构体与共用体
printf("\n name sex age position salary"); printf("\n%-10s %3c %5d %10s %8.2f",,
person.sex,person.age,person.position,person.salary); }
C++课件:第11章结构体与共用体
11.1结构体类型的定义
与基本数据类型不同的是,结构体是又一种构造类型,是由 多个类型的数据成员组合而来的。因此该类型的具体内容应 根据需要先定义,后使用。
可以定义如下结构体类型来描述教师的基本情况:
struct teacher
/*struct 是关键字*/
{char name[30];
C++课件:第11章结构体与共用体
例11.2 定义一个结构体类型,包含通讯录中的如下信息: 姓名、年龄、电话、通讯地址;并定义该类型的变量, 输入数据并输出。
程序l11_2.c
#include "stdio.h" struct address_list {char name[10];
/*{}内是该类型的各成员*/
char sex;
int age;
char position[10];
float salary; };
/*语句末尾是“;” */
该结构体类型名为struct teacher,teacher 是该结构体的标识符; 该类型包含有6个成员的数据项:name、 sex、 age、 position 和salary,其中每个成员项都有自己的类型。
}; struct teacher person; /*定义结构体变量person*/
strcpy(,"wang li");
person.sex=‘f’;
/*给各成员赋值*/
person.age=30;
strcpy(person.position,"middle");
person.salary=1600;
C++第11章结构体与共用体
C++课件:第11章结构体与共用体
1、结构体类型的定义 2、结构体变量的定义及引用 3、结构体数组 4、结构体类型的指针 5、链表的基本操作 6、共用体和枚举类型(了解)
C++课件:第11章结构体与共用体
结构体类型的引入
问题:为了描述一个事物的不同属性,需要用到各种不同类 型的数据,这些数据彼此相关,形成一个有机的整体。例如: 一个教师的基本信息由姓名、性别、年龄、职称、工资等几 项组合而成。如何描述一个教师的情况呢?
将出生日期单独定义为一个结 直接嵌入。
构体类型后再嵌入。
Struct teacher_3
Struct date_type
{ char name[30];
{ int year;
char sex;
int month;
struct date_type
int day;
{int year;
};
int month;
分析: *本例中结构体类型在函数体内定义,其作用范围在本函数体内。 * 先定义结构体类型,后定义结构体变量。 * 对结构体变量输入输出操作、或将基本类型的数据赋给结构体
变量时,需分别访问各个基本类型的成员,不能整体赋值或输 入输出。 如:printf(“%s%c%d%s%f”,person); 错!
前面我们已学习过各种基本类型的变量和数组,而且我们知 道,各个变量之间是相互独立的,无任何联系;而数组只能 用来表示一批相同类型的数据。因此,若用单个变量分别表 示教师的姓名、性别、年龄等属性,则难以反映他们之间的 内在联系;若用数组,则根本无法表示,因为姓名、性别、 年龄等不属同一种数据类型。
C语言中用“结构体”来描述由多个不同类型的数据组成的数 据集合。相当于其他高级语言中的“记录”.
例11.1定义一个结构体变量,用于存放一个教师的信 息,然后将其输出。
C++课件:第11章结构体与共用体
#include "stdio.h"
main() { stБайду номын сангаасuct teacher /*该类型的作用范围在本函数内*/
{ char name[30]; char sex;
int age;
char position[10]; float salary;
} (常用)
C++课件:第11章结构体与共用体
11.2结构体变量的定义及引用
经以上定义后,结构体类型struct teacher与系统定 义的类型int、long、float 等一样,可以用它来定 义该类型的变量、数组、函数等。
不同的是:结构体类型的作用范围是有限制的。在 函数体内定义的结构体类型的作用域为本函数内, 在函数体外定义的结构体类型的作用域为本程序 文件内,若要引用不在本文件内的结构体类型, 通常用#include命令将定义该类型的文件包含进 来。
C++课件:第11章结构体与共用体
可见,定义一种新的结构体类型的一般形式是: struct 结构体类型名 {成员类型 成员名;
…… 成员类型 成员名; }; 其中,struct 是 关键字,结构体类型名、结构体成员名的命 名规则同变量的命名规则一样。 特别提示:struct teacher只是一种具体的结构体类型,根据 需要,程序员可以定义多个不同内容的结构体类型。其中的 成员项是该类型的组成部分,而不是变量。 结构体类型的成员可以是基本类型的变量或数组,也可以是结 构体类型的数据。即结构体类型的嵌套定义。 例如,若将教师的年龄改为出生日期,则可以将出生日期定义 为一个结构体类型,然C+后+课嵌件:入第11s章tr结u构ct体与te共a用c体her中。
Struct teacher_2
int day;
{ char name[30];
} birthday;
char sex;
char position[10];
struct date_type birthday;
float salary;
char position[10]; float salary;
} /*成员birthday又是一个结 构体类型的数据。*/
C++课件:第11章结构体与共用体
printf("\n name sex age position salary"); printf("\n%-10s %3c %5d %10s %8.2f",,
person.sex,person.age,person.position,person.salary); }
C++课件:第11章结构体与共用体
11.1结构体类型的定义
与基本数据类型不同的是,结构体是又一种构造类型,是由 多个类型的数据成员组合而来的。因此该类型的具体内容应 根据需要先定义,后使用。
可以定义如下结构体类型来描述教师的基本情况:
struct teacher
/*struct 是关键字*/
{char name[30];