资源描述:
《c语言 结构体和联合体》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C语言基础结构体和联合体学习目标掌握结构体和联合体的基本使用掌握结构体和联合体的区别了解两者嵌套概述C中,结构也是一种数据类型,可以使用结构变量,因此,象其它类型的变量一样,在使用结构变量时要先对其定义。定义结构变量的一般格式为:struct结构名{类型变量名;类型变量名;...}结构变量;结构体类型变量结构名是结构的标识符不是变量名。类型为第二节中所讲述的五种数据类型(整型、浮点型、字符型、指针型和无值型)。构成结构的每一个类型变量称为结构成员,它象数组的元素一样,但数组中元素是以下标来访问的,而结
2、构是按变量名字来访问成员的。下面举一个例子来说明怎样定义结构变量:结构体示例numnamesexageaddr10968Peter.Jman26wuxistructstudent{intnum;charname[20];charsex;intage;charaddr[30];};结构体类型变量structstring{charname[8];intage;charsex[2];chardepart[20];floatwage1,wage2,wage3,wage4,wage5;}person;或stru
3、ctstring{charname[8];intage;charsex[2];chardepart[20];floatwage1,wage2,wage3,wage4,wage5;};structstringperson;结构体类型变量如果需要定义多个具有相同形式的结构变量时用这种方法比较方便,它先作结构说明,再用结构名来定义变量。例如:structstringTianyr,Liuqi,...;如果省略结构名,则称之为无名结构,这种情况常常出现在函数内部,用这种结构时前面的例子变成:struct{cha
4、rname[8];intage;charsex[2];chardepart[20];floatwage1,wage2,wage3,wage4,wage5;}Tianyr,Liuqi;结构体变量引用结构是一个新的数据类型,因此结构变量也可以象其它类型的变量一样赋值、运算,不同的是结构变量以成员作为基本变量。结构成员的表示方式为:结构变量.成员名如果将"结构变量.成员名"看成一个整体,则这个整体的数据类型与结构中该成员的数据类型相同,这样就可象前面所讲的变量那样使用。下面这个例子定义了一个结构变量,其中每
5、个成员都从键盘接收数据,然后对结构中的浮点数求和,并显示运算结果,同时将数据以文本方式存入一个名为wage.dat的磁盘文件中。请注意这个例子中不同结构成员的访问。#includemain(){struct{/*定义一个结构变量*/charname[8];intage;charsex[2];chardepart[20];floatwage1,wage2,wage3,wage4,wage5;}a;FILE*fp;floatwage;charc='Y';fp=fopen("wage.da
6、t","w");/*创建一个文件只写*/while(c=='Y'
7、
8、c=='y')/*判断是否继续循环*/{printf("Name:");scanf("%s",a.name);/*输入姓名*/printf("Age:");scanf("%d",&a.wage);/*输入年龄*/printf("Sex:");scanf("%d",a.sex);printf("Dept:");scanf("%s",a.depart);9printf("Wage1:");scanf("%f",&a.wage1);/*
9、输入工资*/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.wage2+a.wage3+a.wage4+a.wage5;printf("Thesumofwageis6.2f",wage);/*显示结果*/fprint
10、f(fp,"%10s%4d%4s%30s%10.2f",/*结果写入文件*/a.name,a.age,a.sex,a.depart,wage);while(1){printf("Continue?");c=getchar();if(c=='Y'
11、
12、c=='y'
13、
14、c=='N'
15、
16、c=='n')break;}}fclose(fp);}结构数组结构数组就是具有相同结构类型的变量集合。假如要定义一个班级40个同学的姓名、性别、年龄和住址,可以定义