欢迎来到天天文库
浏览记录
ID:49213402
大小:297.50 KB
页数:23页
时间:2020-02-01
《(补充)结构体.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、19.1结构体问题我们要处理一个学生的信息,包括:学号、姓名、性别、年龄、成绩、地址按照以往定义变量的方式,我们可以这样定义:intnum;charname[20];charsex;intage;floatscore;charaddr[50];这些变量相互独立,很难反映出它们的内在联系structstudent{};结构体29.1.1结构类型【例9-1】平面上点(x,y)的表示分析:如果用两个独立的实型变量来表示两个坐标值,并不能反映它们同属于一个坐标点的内在联系。我们可以自己构造一个点的结构体类型,如下定义structpoint{floatx;/*横坐标*/fl
2、oaty;/*纵坐标*/};(4,3)(0,0)平面上的点关键字结构体名结构体成员{}不能省略3定义一个结构体的一般形式为:struct结构名{数据类型成员1;……数据类型成员n;};注意:1.结构体类型不分配空间,是一种数据类型;2.结构体成员的类型可以不同49.1.2结构变量定义【例9-2】定义点结构变量并保存平面点(4,3)structpoint{floatx;floaty;};structpointpoint1;point1.x=4;point1.y=3;5定义结构体变量的三种形式structpoint{floatx;floaty;};structpoin
3、tpoint1,point2;形式1:先定义类型,再定义变量struct结构名{数据类型成员1;……数据类型成员n;};struct结构名结构变量1,结构变量2;6形式2:在定义类型时定义变量struct结构名{数据类型成员1;……数据类型成员n;}结构变量1,结构变量2;structpoint{floatx;floaty;}point1,point2;7形式3:无类型名变量定义struct{数据类型成员1;……数据类型成员n;}结构变量1,结构变量2;struct{floatx;floaty;}point1,point2;注意:第三种定义形式省略了结构名,在此定
4、义语句后面无法再定义这个类型的其它结构变量。89.1.3结构变量使用【例9-3】结构变量初始化。#includemain(){structstudent{longintnum;charname[20];charaddr[20];}a={89031,"LiLin","123BeijingRoad"};printf("No.:%ldname:%saddress:%s",a.num,a.name,a.addr);}初值表9初始化的一般形式struct结构名结构变量={初始数据};注意:1、在定义结构变量的时候对其进行初始化;2、初始化表由{
5、}括起;3、逗号隔开的数据对应赋值给结构变量的每个成员10【例】成员变量引用#includemain(){structstudent{longintnum;charname[20];charaddr[20];};structstudenta;a.x=89031;strcpy(a.name,"LiLin“);strcpy(a.addr,"123BeijingRoad“);printf("No.:%ldname:%saddress:%s",a.num,a.name,a.addr);}需要对每一个成员赋值需要输出每一个成员成员运算符11说明
6、:1、结构体是一种构造型数据类型,在程序中使用结构变量时,往往不把它作为一个整体来使用。在ANSIC中除了允许具有相同类型的结构变量相互赋值以外,一般对结构变量的使用,包括赋值、输入、输出、运算等都是通过结构变量的成员来实现的。2、引用成员变量的一般形式为:结构变量.成员名“.”是结构成员运算符,连接结构变量名和成员名,它在所有的运算符中优先级最高。3、结构成员可以参与各种合法运算12关键语法1、结构体类型定义只是描述了结构体的组织形式,并不为结构体分配内存空间。2、结构体变量必须先定义,再使用。如:structpointp1;p1.x=1;3、使用结构体变量需要
7、引用其成员。结构变量名.成员名4、相同类型结构体变量赋值运算可以整体操作。如pt1,pt3是两个structpoint类型的结构变量,我们可以执行操作pt3=pt1。13常见编程错误错例1structstu{intno;charname[10];floatscore;}={1,“wangbin”,98};错误分析:structstu是结构类型,不占内存空间,不能对其赋值。14错例2structstu{intno;charname[10];floatscore;}stus;错误分析:1)结构体类型定义之后“}”后必须加“;”2)结构体类型名为structstu,不是
8、stu;申
此文档下载收益归作者所有