欢迎来到天天文库
浏览记录
ID:40238243
大小:684.00 KB
页数:80页
时间:2019-07-28
《C++程序设计(第二版)杨长兴 第5章 自定义数据类型》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C++程序设计(第二版)主编杨长兴刘卫国中国水利水电出版社第5章自定义数据类型本章内容结构体类型共用体类型枚举类型类型定义位段结构4结构体类型结构体类型的定义结构体变量的定义结构体变量的引用和初始化结构体数组结构体与函数链表struct结构体类型名{数据类型 成员名1;数据类型 成员名2;:数据类型 成员名n;};结构体类型名是用户定义的任何一个有效的标识符,它的作用就如同任何一个基本类型名,利用它能够定义具有该结构类型的变量或函数;5.1.1结构体类型的定义结构体类型定义的形式:定义结构体类型的关键字,不
2、能省略注意分号不要省略structstudent{charid[7];//长度为7的字符数组id,表示学号charname[10];//长度为10的字符数组name,表示学号floatscore;//单精度实数类型score,表示入学分数};//注意分号不要省略例:用结构体类型来描述学生的学籍信息(学号、姓名和入学分数)结构体类型的特点总结如下:(1)结构体类型是用户自行构造的。(2)它由若干不同的基本数据类型的数据构成。(3)它属于C++语言的一种数据类型,与整型、实型相当。因此,定义它时不分配空间,只有用它定义变量
3、时才分配空间。5.1.2结构体变量的定义一、先定义结构体类型再定义变量名这是C++语言中定义结构体类型变量最常见的方式,一般语法格式如下:struct结构体类型名{成员说明列表;};struct结构体类型名变量名;在C++中,一般可以省略structstudent{charid[7];charname[10];floatscore;};structstudentst1,st2;例:定义描述学生的学籍信息(学号、姓名和入学分数)的变量在C++中,一般写成:studentst1,st2;二、在声明类型的同时定义变量stru
4、ct结构体名{成员说明列表;}变量名表列;structstudent{charid[7];charname[20];floatscore;}st1,st2;三、直接定义结构体类型变量struct{成员说明列表;}变量名表列;注意:该方式没有结构体类型名,这种形式虽然简单,但不能在再次需要定义该类型的变量时,使用所定义的结构体类型。struct{charname[10];charid[7];floatscore;}st1,st2;(1)类型与变量是不同的概念,不要混淆。对结构体变量来说,在定义时一般先定义一个结构体类型
5、,然后定义该类型的变量。在编译时,是不会为类型分配空间的,只为变量分配空间。关于结构体变量的几点说明:structstudent{charid[7];charname[10];floatscore;}st1;(2)结构体变量的存储空间理论上,是结构体变量各成员所占内存空间的总和。结构变量占实际内存大小可用sizeof运算:sizeof(运算量)structdate{intmonth;intday;intyear;};structstudent{intnum;charname[20];charsex;datebirthd
6、ay;charaddr[40];}stu1,stu2;date是结构体类型,birthday是date类型的成员(3)成员也可以是一个结构体变量,即结构体嵌套定义。5.1.3结构体变量的引用和初始化一、用结构体变量名引用其成员格式:结构体变量名.成员名structdate{intmonth;intday;intyear;};structstudent{intnum;charname[20];charsex;datebirthday;charaddr[40];}stu1,stu2;stu1.num=20312;stu1.
7、num表示引用结构体变量stu1中的num成员注意:1.如果成员本身也是一个结构体类型,则要用若干个成员运算符,一级一级地找到最低一级的成员。stu1.birthday.month=5;structdate{intmonth;intday;intyear;};structstudent{intnum;charname[20];charsex;datebirthday;charaddr[40];}stu1,stu2;2.对结构体变量的成员可以像普通变量一样进行各种运算stu2.num=stu1.num;stu1.birt
8、hday.day++;由于“.”运算符的优先级最高,因此stu1.birthday.day++;相当于(stu1.birthday.day)++;注意:structdate{intmonth;intday;intyear;};structstudent{intnum;charname[20];charsex;datebirthda
此文档下载收益归作者所有