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