计算概论A-C++-结构.ppt
《计算概论A》课程程序设计
C++结构崔斌
什么是结构问题:现实世界中的事物都具有一些属性;例如,学生有“学号”、“姓名”、“性别”、“年龄”等;如果在程序中分别定义“学号”…,难记,难用;难以表达出某些信息都是隶属于某个事物的;在程序中,希望能够用一个相对独立的数据结构来存储与某个事物相关的信息;能不能设计一种数据结构,把这些分散的属性封装起来让他们“看起来”象一个整体,用起来也可以作为整体来用结构是一种构造类型,是由各种类型构造而成;将各种不同类型但相关的数据“集合”起来;
什么是结构声明一个名为“学生”的结构structstudent \\结构的名字为“student”;{ intid; \\声明学号为int型;charname[20];\\声明姓名为字符数组;charsex; \\声明性别为字符型;intage; \\声明年龄为整型;floatscore;\\声明成绩为实型;charaddr[30];\\声明地址为字符数组}; \\注意大括号后的“;”
结构的定义struct结构体名称{类型名1成员名1;类型名2成员名2;……;类型名n成员名n;};
声明结构类型的变量错误的理解“给出了student类型数据的定义,就可以使用student这个结构了” NO!!!!!声明的结构是一种数据类型student仅仅是一种新生的“数据类型”从此,编译器认识一种“student类型”,就像int型,float型,char型一样。必须利用所声明的结构,定义“结构类型的变量”才能够使用必须声明一个“student类型”的变量才能够使用就像不能够直接对“int”,“float”…进行计算操作
定义结构类型的变量定义结构变量的方式〔1〕直接用已声明的结构体类型定义变量名structstudentstudent1,student2;〔结构类型名〕〔结构体变量名〕;studentstudent1,student2;比照:inta; (structstudent相当于int)floata;(structstudent相当于float)
定义结构类型的变量〔2〕在声明类型的同时定义变量structstudent \\结构的名字为“student”;{int id; \\声明学号为int型;charname[20];\\声明姓名为字符数组;charsex; \\声明性别为字符型;intage; \\声明年龄为整型;floatscore; \\声明成绩为实型;charaddr[30]; \\声明地址为字符数组}S_1,S_2; \\注意最后的“;”
定义结构体类型的变量〔3〕直接定义结构变量struct \\声明无名字结构体;{ int id; \\声明学号为int型;charname[20];\\声明姓名为字符数组;charsex; \\声明性别为字符型;intage; \\声明年龄为整型;floatscore; \\声明成绩为实型;charaddr[30]; \\声明地址为字符数组}S_1,S_2; \\注意最后的“;”
结构可以嵌套structstudent{ intid; charname[20]; charsex; intage; structdatebirthday; charaddr[30];}student1,student2;structdate{ intmonth; intday; intyear;};
结构变量的引用引用结构变量中成员的方式为 结构变量名.成员名结构体变量中的成员要单独引用时,使用成员运算符“.”。如:student1.id=10010; 有嵌套的结构成员,需用多个“.”访问。
如:student1.birthday.month=10;不能将一个结构变量作为一个整体进行输入和输出不正确的引用:cout