资源描述:
《结构体共用体和用户定义的数据类型》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、全国计算机等级考试二级教程——C语言程序设计计算中心-NEUComputingCenter敖志广azg@cc.neu.edu.cn1typedef说明一种新的类型名typedefintINTEGER;INTEGERm,n;intm,n;typedefchar*CHAR;CHARp;char*p;2定义在实际问题中我们常需要把不同类型的几个数据组合起来,构成一个整体。如一个公司职员的个人信息,或学校中教师和学生的信息。以学生信息为例,它可能包括学生的学号、班级、姓名、性别、年龄、成绩等。这时原有的那些数
2、据类型就显的有点无能为力了,所以引入一种新的数据类型----结构体。结构体是由一些逻辑相关,但数据类型不同的分量组成的一组数据。注意:用户需要先定义结构体类型,之后才能定义结构体变量注意不要忘了分号成员列表结构体类型定义形式:struct结构体类型名{数据类型成员名1;数据类型成员名2;::数据类型成员名n;};关键字用户定义的标识符一、定义结构体变量1.先定义结构体类型,再定义变量structstudent{charname[10];intage;floats1,s2;};structstudent
3、st1,st2;st1st2nameages1s2nameages1s2结构体变量st1和st2各自都需要20个字节的存储空间2.定义结构体类型同时定义变量structstudent{charname[10];intage;floats1,s2;}st1,st2;3.直接定义结构体变量struct{charname[10];intage;floats1,s2;}st1,st2;4.说明:(1)结构体变量具有结构体类型的一切特征在内存中结构体变量占有一片连续的存储单元存储单元的字节数可用sizeof运算
4、符算出printf(“%d”,sizeof(structstudent));printf(“%d”,sizeof(st1));(2)结构体类型可以嵌套定义例:structdate{intyear;intmonth;intday;};structstud{charname[10];structdatebirthday;floats1,s2;};或:structstud{charname[10];structdate{intyear;intmonth;intday;}birthday;floats
5、1,s2;};3结构体变量的初始化structstudent{charname[10];intage;floatscore1,score2;}st1={“Mary”,21,78,86};structstud{charname[10];structdatebirthday;floatscore1,score2;};structstudst2={“John”,1980,11,23,89,95};structstudent{charname[10];intage;floatscore1,score2;};s
6、tructstudentst3;st3={“Mary”,21,78,86};这是初始化,正确错误,C不允许这样赋值4结构体变量的引用1.引用结构体变量中的成员格式:结构体变量名.成员名structstudent{charname[10];intage;floats1,s2;};注意:一般是对结构体变量的各个成员分别进行赋值st1={“Mary”,21,78,86};这样的赋值是不允许的structstudentst1;st1.name=“Mary”;st1.age=21;st1.s1=78;st1.s
7、2=86;4.使用结构体结构成员的引用结构作为若干成员的集合是一个整体可对结构整体进行操作可访问结构中的每个成员使用结构中成员的方法结构变量名.成员名称运算符“.”的含义是访问结构中的成员“.”操作的优先级最高结合性为从左到右指针变量名->成员名在结构体指针变量情况下使用运算符“->”structdate{intyear;intmonth;intday;};structstud{charname[10];intage;structdatebirthday;floats1,s2;};structstud
8、st2;intage,year;st2.name=“John”;st2.age=20;st2.birthday.year=1980;st2.birthday.month=11;st2.birthday.day=23;st2.s1=89;st2.s2=95;age=24;year=2000;可以定义与结构体变量成员名相同名字的变量它们之间不会发生混乱2.相同类型的结构体变量可以进行整体赋值structdate{intyear;intmonth;intday