大家好,欢迎来到IT知识分享网。
现实生活中存在的大部分对象具有不同的属性,需要用不同的数据类型去描述。类如,一个公司员工的信息包括工号,姓名,性别,年龄,工资等。这些属性都是有联系的,因为他们属于同一个员工。为了能够表示同一个对象的多种属性,C语言给出了另一种构造数据类型——结构体。利用结构体能够将不同类型的数据组合在一起,用来描述上述具有不同属性的对象,从而解决实际问题。
在程序中使用结构体,首先要对结构体进行定义。定义结构体类型的一般形式为:
struct 结构体名 { 数据类型 成员名1; 数据类型 成员名2; 数据类型 成员名3; ... 数据类型 成员名n; };
“struct”是关键字,是结构体的标志;”结构体名”是用户定义的标识符,要符合C语言的标识符命名规则;各成员的数据类型可以是基本类型,也可以是构造类型。例如:
struct employee { int num; char name[20]; char sex; int age; float salary; };
定义了一个结构体类型,结构体类型名是employee,该结构体由5个成员组成。
定义的结构体类型是一种数据类型。它和系统提供的标准数据类型(如int,char,float,double等)具有相同的地位和作用,只不过结构体类型需要用户自己指定而与,而标准数据类型由系统定义。
说明:
1)结构体类型的定义是程序语句,因此一定注意右花括号后面的分号不能丢。
2)结构体中的成员可以定义成不同的数据类型,他们不是变量,因此成员名可以与程序中其他变量同名,不同结构体中的成员也可以同名。
3)定义结构体类型,只是定义一种和基本类型地位相同的新的数据类型,不是定义的变量。
4)定义好一个结构体类型后,可以将其看作是与int,char,和float等数据类型一样的一个新的数据类型,其中并无具体数据,系统对之也没有分配实际的内存单元。为了能够在程序中使用结构体类型的数据,应当定义结构体类型的变量,并在其中存放具体的数据。
例1.输入一个学生的英语期中和期末成绩,计算并输出平均成绩。
#include<stdio.h> void main() { struct study //定义结构类型,类型名为study { float mid; float end; float average; }english; //定义结构体类型变量english scanf("%f,%f",&english.mid,&english.end); //输入期中,期末成绩 english.average=(english.mid+english.end)/2; //求期中,期末的平均成绩 printf("average=%.1f\n",english.average); //输出所求的平均成绩 }
程序运行情况如下:
如果输入:90.5,80.5
结果如下:average=85.5
例2.建立两个学生的基本情况表,然后将其输出。
#include<stdio.h> #include<string.h> void main() { struct stud //定义结构体类型 ,类型名为stud { int num; char name[20]; char sex; int age; float score; }student1={10001,"Liu",'F',18,75.0},student2; //定义结构体类型变量 student2=student1; //将student1变量中各成员的值逐个赋给student2中的相应成员 student2.num=10002; strcpy(student2.name,"Zhang"); //将字符串复制到student2.name成员中 printf("student1:%d,%s,%c,%d,%.1f\n",student1.num,student1.name,student1.sex,student1.age,student1.score); printf("student2:%d,%s,%c,%d,%.1f\n",student2.num,student2.name,student2.sex,student2.age,student2.score); }
程序运行结果如下:
student1:10001,Liu,F,18,75.0
student2:10002,Zhang,F,18,75.0
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/92173.html