C语言结构体和联合体.pptx
《C语言结构体和联合体.pptx》由会员分享,可在线阅读,更多相关《C语言结构体和联合体.pptx(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、概述C中,结构也是一种数据类型,可以使用结构变量,因此,象其它类型的变量一样,在使用结构变量时要先对其定义。定义结构变量的一般格式为:struct结构名类型变量名;类型变量名;.结构变量;第1页/共22页结构体类型变量结构名是结构的标识符不是变量名。类型为第二节中所讲述的五种数据类型(整型、浮点型、字符型、指针型和无值型)。构成结构的每一个类型变量称为结构成员,它象数组的元素一样,但数组中元素是以下标来访问的,而结构是按变量名字来访问成员的。下面举一个例子来说明怎样定义结构变量:第2页/共22页结构体示例numnamesexageaddr10968 Peter.Jman26wuxistruct
2、 studentint num;char name20;char sex;int age;char addr30;第3页/共22页结构体类型变量structstringcharname8;intage;charsex2;chardepart20;floatwage1,wage2,wage3,wage4,wage5;person;或structstringcharname8;intage;charsex2;chardepart20;floatwage1,wage2,wage3,wage4,wage5;structstringperson;第4页/共22页结构体类型变量如果需要定义多个具有相同形式
3、的结构变量时用这种方法比较方便,它先作结构说明,再用结构名来定义变量。例如:structstringTianyr,Liuqi,.;如果省略结构名,则称之为无名结构,这种情况常常出现在函数内部,用这种结构时前面的例子变成:structcharname8;intage;charsex2;chardepart20;floatwage1,wage2,wage3,wage4,wage5;Tianyr,Liuqi;第5页/共22页结构体变量引用结构是一个新的数据类型,因此结构变量也可以象其它类型的变量一样赋值、运算,不同的是结构变量以成员作为基本变量。结构成员的表示方式为:结构变量.成员名如果将结构变量.
4、成员名看成一个整体,则这个整体的数据类型与结构中该成员的数据类型相同,这样就可象前面所讲的变量那样使用。下面这个例子定义了一个结构变量,其中每个成员都从键盘接收数据,然后对结构中的浮点数求和,并显示运算结果,同时将数据以文本方式存入一个名为wage.dat的磁盘文件中。请注意这个例子中不同结构成员的访问。第6页/共22页#i n c l u d e m a i n()s t r u c t /*定 义 一 个 结 构 变 量*/c h a r n a m e 8 ;i n t a g e;c h a r s e x 2 ;c h a r d e p a r t 2 0 ;f l o a t w
5、 a g e 1,w a g e 2,w a g e 3,w a g e 4,w a g e 5;a;F I L E *f p;f l o a t w a g e;c h a r c=Y ;f p=f o p e n(w a g e.d a t ,w );/*创 建 一 个 文 件 只 写*/w h i l e(c=Y|c=y )/*判 断 是 否 继 续 循 环*/p r i n t f(n N a m e:);s c a n f(%s ,a.n a m e);/*输 入 姓 名*/p r i n t f(A g e:);s c a n f(%d ,&a.w a g e);/*输 入 年 龄
6、*/p r i n t f(S e x:);s c a n f(%d ,a.s e x);p r i n t f(D e p t:);s c a n f(%s ,a.d e p a r t);7第7页/共22页 printf(Wage1:);scanf(%f,&a.wage1);/*输入工资*/printf(Wage2:);scanf(%f,&a.wage2);printf(Wage3:);scanf(%f,&a.wage3);printf(Wage4:);scanf(%f,&a.wage4);printf(Wage5:);scanf(%f,&a.wage5);wage=a.wage1+a.w
7、age2+a.wage3+a.wage4+a.wage5;printf(The sum of wage is 6.2fn,wage);/*显示结果*/fprintf(fp,%10s%4d%4s%30s%10.2fn,/*结果写入文件*/a.name,a.age,a.sex,a.depart,wage);while(1)printf(Continue?);c=getchar();if(c=Y|c=y|c=N|c=n)break;fclose(fp);第8页/共22页结构数组结构数组就是具有相同结构类型的变量集合。假如要定义一个班级40个同学的姓名、性别、年龄和住址,可以定义成一个结构数组。如下所
8、示:structcharname8;charsex2;intage;charaddr40;student40;需要指出的是结构数组成员的访问是以数组元素为结构变量的,其形式为:结构数组元素.成员名例如:student0.namestudent30.age实际上结构数组相当于一个二维构造,第一维是结构数组元素,每个元素是一个结构变量,第二维是结构成员。注意:结构数组的成员也可以是数组变量。structaintm35;floatf;chars20;y4;为了访问结构a中结构变量y2的这个变量,可写成y2.m14第9页/共22页结构指针结构指针是指向结构的指针。它由一个加在结构变量名前的*操作符来定
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 结构 联合体
限制150内