您好,欢迎访问三七文档
2020/2/2C语言程序设计12020/2/21C语言—结构体徐艳艳xuyyxu@gmail.comC语言程序设计2C语言程序设计2本次课程所讲内容定义结构体类型定义结构体类型变量引用结构体变量给结构体变量赋值结构体的嵌套结构体数组指向结构体类型变量的指针C语言程序设计3C语言程序设计3本次课程所讲内容定义结构体类型定义结构体类型变量引用结构体变量给结构体变量赋值结构体的嵌套结构体数组指向结构体类型变量的指针定义结构体类型学号姓名性别年龄成绩地址10001ZhangXinM1990.5Shanghai10002WangLiF2098Beijing学号(num):整型(int)变量姓名(name):字符型(char)数组性别(sex):字符型(char)变量年龄(age):整型(int)变量成绩(score):单精度实型(float)变量地址(addr):字符型(char)数组表中包含多种类型的数据,无法用任何单一种类的数据类型来完全描述。C语言允许用户建立一种集不同数据类型于一体的数据构造类型——结构体类型。学生档案表定义结构体类型用户必须在程序中自己建立所需的结构体类型定义结构体类型其实是对结构体内部构成形式进行描述,即对成员的声明,包括每个成员所具有的数据类型的描述定义(声明)一个结构体类型的一般形式为struct结构体类型名{类型名成员名;类型名成员名;…};成员列表要有分号C语言程序设计6定义结构体类型对于学生档案表,构造结构体类型structstudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];};每个数据项被称为该结构体的结构体成员注意:structstudent是一种结构体类型,不是变量!C语言程序设计7定义结构体类型结构体类型并不是只有一种,而是可以设计出许多种结构体类型structsinger{//歌手代号ints_id;//歌手参赛歌曲得分doubles1;//歌手综合知识得分doubles2;//总分doublesum;};structdate{intmonth;intday;intyear;};结构体类型中各成员的数据类型也可以相同,但含义不同C语言程序设计8定义结构体类型练习姓名工作单位邮编固定电话E-mailLiXinBeilin10008366100020li@163.comLiuLiTsinghua10008484221099liu@126.com通讯录structaddress_list{charname[20];chardepart[30];intpostcode;intphone;charemail[30];};C语言程序设计9定义结构体类型练习体检表structtijian{charcard[20];charname[20];charsex;intage;floatheight;floatweight;charstate[10];};病历卡号姓名性别年龄身高体重身体状况20E5019TomM221.7667.2goodC语言程序设计10C语言程序设计10本次课程所讲内容定义结构体类型定义结构体类型变量引用结构体变量给结构体变量赋值结构体的嵌套结构体数组指向结构体类型变量的指针C语言程序设计11定义结构体类型变量先声明结构体类型再定义结构体变量structstudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];};structstudentstudent1,student2;结构体变量struct结构体类型名{结构体成员列表;};struct结构体类型名结构体变量名列表C语言程序设计12定义结构体类型变量声明结构体类型的同时定义结构体变量structstudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];}student1,student2;struct结构体类型名{结构体成员列表;}结构体变量名列表;C语言程序设计13定义结构体类型变量不指定类型名而直接定义结构体类型变量struct{intnum;charname[20];charsex;intage;floatscore;charaddr[30];}student1,student2;struct{结构体成员列表;}结构体变量名列表;没有结构体类型名这种情况只能在定义结构体类型的同时定义结构体变量定义结构体类型变量定义结构体类型变量之后,系统会为之分配内存空间,该变量的长度(所占字节数)也被固定下来structstudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];};structstudentstudent1,student2;student1和student2的长度为4+20+1+4+4+30=63结构体类型变量的长度等于它的各成员长度之和。C语言程序设计15定义结构体类型变量运算符sizeof()返回各类型变量的长度C语言程序设计16C语言程序设计16本次课程所讲内容定义结构体类型定义结构体类型变量引用结构体变量给结构体变量赋值结构体的嵌套结构体数组指向结构体类型变量的指针C语言程序设计17引用结构体变量C语言对结构体变量的处理是通过对其成员的引用实现的引用结构体变量中成员的方式为结构体变量名.成员名“.”是成员运算符,它在所有的运算符中优先级最高一个整体C语言程序设计18引用结构体变量student1.num代表student1变量中的num成员对变量的成员赋值student1.num=1001;输入变量的成员scanf(%d,);输出变量的成员printf(%d,);同类的结构体变量可以互相赋值student1=student2;&student1.numstudent1.numstructstudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];}student1,student2;引用结构体变量不能将一个结构体变量作为一个整体进行输入和输出假设已声明结构体类型structstudent,并且定义了该结构体类型的变量student1,假设变量的各成员已有值scanf(“%d,%s,%c,%d,%f,%s”,&student1);printf(“%d,%s,%c,%d,%f,%s\n”,student1);printf(“%x\n”,&student1);错误错误正确引用结构体变量对结构体变量的成员可以像普通变量一样进行各种运算student2.score=student1.score;sum=student1.score+student2.score;student1.age++;++student1.age;C语言程序设计21C语言程序设计21本次课程所讲内容定义结构体类型定义结构体类型变量引用结构体变量结构体变量的赋值结构体的嵌套结构体数组指向结构体类型变量的指针C语言程序设计22结构体变量的赋值c14_1.c定义结构体变量的同时对其初始化#includestdio.hvoidmain(){structstudentnew{intnum;charname[20];charsex;charaddr[20];}a={10101,LiLin,'M',123BeijingRoad};printf(No.:%d\nname:%s\nsex:%c\naddress:%s\n,a.num,a.name,a.sex,a.addr);}初始化C语言程序设计23结构体变量的赋值c14_2.c#includestdio.h#includestring.hvoidmain(){structstudentnew{intnum;charname[20];charsex;charaddr[20];}a;a.num=10101;strcpy(a.name,LiLin);a.sex='M';strcpy(a.addr,123BeijingRoad);printf(No.:%d\nname:%s\nsex:%c\naddress:%s\n,a.num,a.name,a.sex,a.addr);}不能写作a.name=“LiLin”(错误)定义完变量之后,再对各成员赋值C语言程序设计24结构体变量的赋值c14_3.c#includestdio.h#includestring.hvoidmain(){structstudentnew{intnum;charname[20];charsex;charaddr[20];}a;scanf(%d%c,&a.num,&a.sex);getchar();gets(a.name);gets(a.addr);printf(No.:%d\nname:%s\nsex:%c\naddress:%s\n,a.num,a.name,a.sex,a.addr);}从键盘上输入数据,对各成员赋值C语言程序设计25结构体变量的赋值c14_4.c#includestdio.hvoidmain(){structsinger{ints_id;doubles1;doubles2;doublesum;}a;doublesum;a.s_id=2011;a.s1=88.5;a.s2=0.85;a.sum=a.s1+a.s2;sum=a.sum;printf(sum=%f\na.sum=%f\n,sum,a.sum);}结构体类型中的成员名可以与程序中的变量名相同,但二者不代表同一对象引用结构体类型中的成员结构体变量名.成员名引用普通变量时直接使用变量名C语言程序设计26C语言程序设计26本次课程所讲内容定义结构体类型定义结构体类型变量引用结构体变量给结构体变量赋值结构体的嵌套结构体数组指向结构体类型变量的指针C语言程序设计27结构体的嵌套structcase_table{charname[20];charsex;floatheight;floatweight;structsight_tablesight;charstate[10];}health;姓名性别身高体重视力身体状况左眼右眼TomM1.7667.21.00.9goodstructsight_table{floatleft;floatright;};C语言程序设计28引用嵌套的结构体变量的成员health.sight.left=1.0;health.sight.right=0.9;姓名性别身高体重视力身体状况左眼右眼TomM1.7667.21.00.9good如果结构体类型的成员又属于一个结构体类型,则要用若干个成员运算符,一级一级地找到最低一级的成员。只能对最低级的成员进行赋值、存取或者运算。C语言程序设计29C语言程序设计29本次课程所讲内容定义结构体类型定义结构体类型变量引用结构体变量给结构体变量赋值结构体的嵌套结构体数组指向结构体类型变量的指针C语言程序设计30结构体数组定义结构体数组structstudent{intnum;charname[20];intage;floatscore;charaddr[30];};structstudentstu[3];structstudent{intnum;charname[20];intage;floatscore;charaddr[30];}stu[3];C语言程序设计31结构体数组结构体数组的初始化structstudent{intnum;charname[20];intage;floatscore;charaddr[30];}stu[3]={{10101,“LiLin”,1
本文标题:C语言_结构体
链接地址:https://www.777doc.com/doc-3418673 .html