C++程序设计 湖南大学 杜四春、银红霞 第7章结构体与共用体 7.1结构体的概念Z4结构体数组 72结构体类型变量75结构体与指钍 的定义方法 76结构体与函数 73结构体变量的使77共用体 用形式和初始化
C++程序设计 湖南大学 杜四春、银红霞 第7章 结构体与共用体 7.1 结构体的概念 7.2 结构体类型变量 的定义方法 7.3 结构体变量的使 用形式和初始化 7.4 结构体数组 7.5 结构体与指针 7.6 结构体与函数 7.7 共用体
C++程序设计 湖南大学 杜四春、银红霞 在实际的处理对象中,有许多信息是由多 不同类型的数据组合在一起进行描述,而且 这些不同类型的数据是互相联系组成了一个有 机的整体。此时,就要用到一种新的构造类型 数据——结构体( structure),简称结构。结 构体的使用为处理复杂的数据结构(如动态数 据结构等)提供了有效的手段,而且,它们为 函数间传递不同类型的数据提供了方便 同时也介绍在相同存储区域内存储不同数 据类型的构造类型一一共用体(也称联合体) 的相关概念
C++程序设计 湖南大学 杜四春、银红霞 在实际的处理对象中,有许多信息是由多 个不同类型的数据组合在一起进行描述,而且 这些不同类型的数据是互相联系组成了一个有 机的整体。此时,就要用到一种新的构造类型 数据——结构体(structure),简称结构。结 构体的使用为处理复杂的数据结构(如动态数 据结构等)提供了有效的手段,而且,它们为 函数间传递不同类型的数据提供了方便。 同时也介绍在相同存储区域内存储不同数 据类型的构造类型――共用体(也称联合体) 的相关概念
C++程序设计 湖南大学 杜四春、银红霞 7.1结构体的概念 结构体是用户自定义的新数据类型,在结 构体中可以包含若干个不同数据类型和不同意 义的数据项(当然也可以相同),从而使这些 数据项组合起来反映某一个信息。结构体相当 于 COBOL和 PASCAL等高级语言中的“记录 例如,可以定义一个职工 Worker结构体, 在这个结构体中包括职工编号、姓名、性别、 年龄、工资、家庭住址、联系电话。这样就可 以用一个结构体数据类型的变量来存放某个职 工的所有相关信息。并且,用户自定义的数据 类型Woke也可以与int、 double等基本数据类 型一样,用来作为定义其他变量的数据类型
C++程序设计 湖南大学 杜四春、银红霞 7.1 结构体的概念 结构体是用户自定义的新数据类型,在结 构体中可以包含若干个不同数据类型和不同意 义的数据项(当然也可以相同),从而使这些 数据项组合起来反映某一个信息。结构体相当 于COBOL 和PASCAL等高级语言中的“记录” 。 例如,可以定义一个职工worker结构体, 在这个结构体中包括职工编号、姓名、性别、 年龄、工资、家庭住址、联系电话。这样就可 以用一个结构体数据类型的变量来存放某个职 工的所有相关信息。并且,用户自定义的数据 类型worker也可以与int、double等基本数据类 型一样,用来作为定义其他变量的数据类型
C++程序设计 湖南大学 杜四春、银红霞 定义一个结构体类型的一般形式为: struct结构体名 数据类型 成员名1 数据类型 成员名2; 数据类型 成员名n; 在大括号中的内容也称为“成员表列”或“域 表”。其中,每个成员名的命名规则与变量名相同; 数据类型可以是基本变量类型和数组类型,也可以是 指针变量类型,或者是一个结构体类型;用分号“;” 作为结束符。整个结构的定义电用分号作为结束符
C++程序设计 湖南大学 杜四春、银红霞 定义一个结构体类型的一般形式为: struct 结构体名 { 数据类型 成员名1; 数据类型 成员名2; : 数据类型 成员名n; }; 在大括号中的内容也称为“成员表列”或“域 表”。其中,每个成员名的命名规则与变量名相同; 数据类型可以是基本变量类型和数组类型,也可以是 指针变量类型,或者是一个结构体类型;用分号“;” 作为结束符。整个结构的定义也用分号作为结束符
C++程序设计 湖南大学 杜四春、银红霞 例如:定义一个职工 worker结构体如下: struct worker long number char name 201 char sex ∥ex是成员名 Int age, float salary char address[ 80] char phone [20];) 注意分号不要省略 int sex10 ∥se是变量名
C++程序设计 湖南大学 杜四春、银红霞 例如:定义一个职工worker结构体如下: struct worker { long number; char name[20]; char sex; //sex是成员名 int age; float salary; char address[80]; char phone[20]; }; //注意分号不要省略 int sex=10; //sex是变量名
C++程序设计 湖南大学 杜四春、银红霞 结构体类型中的成员名可以与程序中的变量名相 同,二者并不代表同一对象,编译程序可以自动对它 们进行区分。 最后,总结一下结构体类型的特点 (1)结构体类型是用户自行构造的。 2)它由若干不同的基本数据类型的数据构成 (3)它属于C++语言的一种数据类型,与整型 实型相当。因此,定义它时不分配空间,只有用它定 义变量时才分配空间
C++程序设计 湖南大学 杜四春、银红霞 结构体类型中的成员名可以与程序中的变量名相 同,二者并不代表同一对象,编译程序可以自动对它 们进行区分。 最后,总结一下结构体类型的特点: (1)结构体类型是用户自行构造的。 (2)它由若干不同的基本数据类型的数据构成。 (3)它属于C++语言的一种数据类型,与整型、 实型相当。因此,定义它时不分配空间,只有用它定 义变量时才分配空间
7,2结构体类型变量 杜四春、银红霞 的定义方法 结构体只是用户自定乂的一种数据类型,因此要 通过定义结构体类型的变量来使用这种类型。通常有 三种形式来定义一个结构体类型变量,分别说明如下: 721先定义结构体类型再定义变量名 这是C++语言中定义结构体类型变量最常见的方 式,一般语法格式如下 struct结构体名 成员表列 stru结构体名变量名;
C++程序设计 湖南大学 杜四春、银红霞 7.2 结构体类型变量 的定义方法 结构体只是用户自定义的一种数据类型,因此要 通过定义结构体类型的变量来使用这种类型。通常有 三种形式来定义一个结构体类型变量,分别说明如下: 7.2.1 先定义结构体类型再定义变量名 这是C++语言中定义结构体类型变量最常见的方 式,一般语法格式如下: struct 结构体名 { 成员表列; }; struct 结构体名 变量名;
C++程序设计 湖南大学 杜四春、银红霞 例如,定义几个职工变量: struct worker long number char name[20] char sex int age float salary char address [80] char phone [20]i struct worker worker1, worker2
C++程序设计 湖南大学 杜四春、银红霞 例如,定义几个职工变量: struct worker { long number; char name[20]; char sex; int age; float salary; char address[80]; char phone[20]; }; struct worker worker1,worker2;
C++程序设计 湖南大学 杜四春、银红霞 注意:“ struct worker”代表类型名,不能分开写 为: struct worker worker ∥)错误,没有指明是哪种结构体类型 或 worker worker1, worker 2 ∥)错误,没有 struct关键字 //系统不认为 worker是结构体类型 为了使用上的方便,程序员通常用一个符号常量 代表一个结构体类型。即在程序开头加上下列语句: #define worker struct worker 这样在程序中, WORKER与 struct worker完全等效
C++程序设计 湖南大学 杜四春、银红霞 注意:“struct worker”代表类型名,不能分开写 为: struct worker1,worker2; //错误,没有指明是哪种结构体类型 或 worker worker1,worker2; //错误,没有struct关键字 //系统不认为worker是结构体类型 为了使用上的方便,程序员通常用一个符号常量 代表一个结构体类型。即在程序开头加上下列语句: #define WORKER struct worker; 这样在程序中,WORKER与struct worker完全等效
C++程序设计 湖南大学 杜四春、银红霞 例如 WORKER long number char name[2o]i char sex Int age float salary char address[80li char phone [20]i) WORKER Worker worker 2 此时,可以直接用 WORKER定义 worker1 worker2两个变量,而不必再写关键字 struct
C++程序设计 湖南大学 杜四春、银红霞 例如: WORKER { long number; char name[20]; char sex; int age; float salary; char address[80]; char phone[20]; }; WORKER worker1,worker2; 此 时 , 可以直接用 WORKER 定 义 worker1 、 worker2两个变量,而不必再写关键字struct