预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共85页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第8章用户自定义数据类型本章内容8.1.1结构类型的定义结构类型的概念我们可以创建如下的结构类型: structstaff其中staff由用户命名 { charnumber[8]; charname[10]; charsex; intage; chardep[20]; floatwage[2]; }; 以上定义了一个结构类型structstaff(与int同地位),它包含了number、name、sex、age、dep、wage等不同类型的数据项。1.结构体类型说明的一般形式 struct[标识符] { 结构成员列表; }; 说明: (1)struct是关键字,声明要定义一个结构类型,结构类型名用标示符命名,要“见名知义”; (2)成员列表给出n个成员声明,成员可以基本类型变量、数组,也可以是另一结构类型变量等,对每个成员必须作类型说明,成员之间用分号分隔; 2.结构类型的几点说明(3)结构类型可以嵌套定义。所谓嵌套定义是指在一个结构类型中可以包含另一个或一些结构类型,通常用于结构类型的成员是一个结构变量的场合。结构类型的几点说明(4)允许省略结构类型名,即允许定义无类型名的结构类型。1.结构类型数据对象包括一般变量、指针、数组等,对于成为结构变量、结构指针、结构数组等可以在说明语句中用已定义的结构类型定义结构数据对象,也可以在定义结构类型的同时定义结构数据对象。2.结构类型变量的三种定义方式 (1)在说明结构类型的同时,也定义了结构类型变量 例如: structbook { intnum; charname[60]; floatprice; }book1,books[3]; 在说明结构类型名structbook的同时,定义了结构类型变量book1与结构类型数组books,数组books有三个元素:books[0]、books[1]、books[2]。(2)先说明结构类型,再单独进行变量定义 例如: structstaff { charname[10]; charsex; floatwage[2]; }; ... structstaffworker1,worker2;定义了结构类型:struceStudent后定义不同变量的区别: struceStudents1,s2[100],*s3=&s1,*s4=s2; 从上面可以看出: (1)s1是该类型的变量,s2是该类型的一维数组, s3,s4是指向该类型变量的结构指针; (2)结构类型的变量名不是地址. 3.结构类型变量的初始化 可以在定义结构类型变量的同时对其初始化,其语法格式:struct标识符结构变量名={成员初始化值表}定义了结构数据对象,就可以访问其中的每一个成员。结构成员可以像基本变量那样使用,如赋值、输入输出、参加表达式的计算等,这些操作统称为对结构成员的访问。 1、结构成员的表示 结构变量是由n个成员聚合而成的一个整体,要访问其中的一个成员,必须同时给出整体的名称和个体成员的名称。 structStudents1,s2[100],*s3=&s1; s1是结构变量,用来存放单个学生的信息 s2是结构数组,该数组包含100个类型是structStudent的成员,这样的数组可以表示一个学生情况 s3是结构指针,存放structStudent类型数据对象s1的内存首地址。(1)结构变量成员的表示: 结构变量.成员名(如s1.number、s1.age) (2)结构数组元素成员的表示 结构数组名[下标表达式].成员名 s2[5].name表示s2的第六个元素(结构变量)之name成员 (3)结构指针成员的表示 结构指针->成员名(如s3->sex)或 (*结构指针).成员名(如(*s3).sex) 对于多层嵌套结构成员,有多个“.”,从外向内。2.成员运算符 两种成员运算符:“.”和“->” 3.嵌套结构的结构成员的表示 结构成员本身又是结构变量,称为嵌套结构。必须使用若干个成员运算符来连接多个结构变量及其对应的分量,逐级表示到最低一级成员,该级成员是可以直接访问的基本数据对象。 例如:student1.birthday表示student1中的birthday;而student1.birthday.year则表示student1中的birthday的year成员 注意:只能对最内层的成员进行存取、运算以及输入、输出等操作4.结构变量成员的引用 结构变量的成员可以像普通变量一样进行各种运算,如赋值、输入、输出、计算及地址操作等,例如: student1.birthday.year++; student.number=11001; scanf(“%d”,&student1.sex) 将变量中的sex的地址作为参数传递给scanf