结构体与结构体数组.ppt

上传人:牧羊曲112 文档编号:6599078 上传时间:2023-11-16 格式:PPT 页数:20 大小:277.50KB
返回 下载 相关 举报
结构体与结构体数组.ppt_第1页
第1页 / 共20页
结构体与结构体数组.ppt_第2页
第2页 / 共20页
结构体与结构体数组.ppt_第3页
第3页 / 共20页
结构体与结构体数组.ppt_第4页
第4页 / 共20页
结构体与结构体数组.ppt_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《结构体与结构体数组.ppt》由会员分享,可在线阅读,更多相关《结构体与结构体数组.ppt(20页珍藏版)》请在三一办公上搜索。

1、第8讲 结构体与结构体数组,本讲内容:(1)结构体的引出(2)结构体变量的定义和引用(3)结构体数组,7.1 C语言的数据类型,数据 类型,基本类型,整数类型(int,long),数组类型,构造类型,指针类型,字符类型(char),浮点类型(float,double),结构体类型(struct),7.1 结构体的引出,1.用数组存储。,一、考察一个学生的基本信息表,如何存储?,int num3;char name320;char sex3;,将同一个学生信息存储在了不同变量中,割裂了信息之间的联系,希望用一个变量来存储一条学生信息,7.1 结构体的引出,结构体是由一些逻辑相关,但数据类型不同的

2、分量组成的一组数据。,可否使用数组?,2.如何存储一条学生信息,不可以,如何将不同数组类型的数据组织在一起呢?,使用结构体,二、结构体的概念,int num;char name10;char sex;int age;int score;char institute20;,7.1 结构体的引出,struct,;,student,注意不要忘了分号,三、结构体类型的定义:,struct 结构体类型名 数据类型 成员名1;数据类型 成员名2;:数据类型 成员名n;,关键字,用户定义的标识符,例:struct date int year;int month;int day;struct stud cha

3、r name10;struct date birthday;int s1,s2;,结构体类型可以嵌套定义,例:struct stud char name10;struct date int year;int month;int day;birthday;int s1,s2;,结构体的成员可以是结构体,7.1 结构体的引出,注意:定义了结构体类型,仅仅是定义了数据的组织形式,创立了 一种数据类型,但并不会为这种结构体类型分配内存空间 只有定义了结构体变量,才会为变量分配空间,一、定义结构体变量的方法(1)先定义结构体类型,再定义变量 struct student char name12;int

4、age;int s1,s2;,nameages1s2,nameages1s2,内存中结构体变量占有一片连续的存储单元,其占用的字节数 可用sizeof 运算符算出:printf(%dn,sizeof(struct student);printf(%dn,sizeof(st1);结构体变量st1和st2各自都需要24个字节的存储空间,结构体 类型定义,结构体 变量定义,7.2.1 结构体变量的定义,struct student st1,st2;,(2)定义结构体类型同时定义变量 struct student char name12;int age;int s1,s2;st1,st2;,(3)直接

5、定义结构体变量 struct char name12;int age;int s1,s2;st1,st2;,注意:这里没有结构体类型名这种方式有时使用并不方便因此不建议大家采用,7.2.1 结构体变量的定义,一、结构体变量的引用,格式:结构体变量名.成员名,struct student char name12;int age;int s1,s2;,void main()st1.age=21;st1.s1=78;st1.s2=86;st1.name=Mary;,应该写成strcpy(st1.name,Mary);,7.2.2 结构体变量的引用和初始化,(1)结构体变量的引用,一般情况下都是对结构

6、体变量的成员进行引用,如赋值、输入、输出,struct student st1;,7.2.2 结构体变量的引用和初始化,(2)同类型结构体变量可以进行整体赋值,struct date int year;int month;int day;struct stud int name10;struct date birthday;,void main()struct stud st1,st2,st3;strcpy(st1.name,Mary);st1.birthday.year=1991;st1.birthday.month=11;st1.birthday.day=23;st2=st1;strcpy

7、(st1.name,Alex);st3.birthday=st1.birthday;,st1,st2,st3,(3)可以定义与结构体成员名相同名字的变量,不会发生混乱,7.2.2 结构体变量的引用和初始化,void main()int year,name10;struct stud st1;strcpy(st1.name,Mary);st1.birthday.year=1991;year=2000;strcpy(name,Alex);,struct date int year;int month;int day;struct stud int name10;struct date birthd

8、ay;,二、结构体变量的初始化,struct student char name10;int age;int s1,s2;st1=Mary,21,78,86;,struct stud char name10;struct date birthday;int s1,s2;struct stud st2=John,1991,11,23,89,95;,struct student char name10;int age;int s1,s2;struct student st1;st1=Mary,21,78,86;,这是赋值,错误C不允许这么做,初始化,正确,7.2.2 结构体变量的引用和初始化,三、

9、结构体变量的输入、输出 C语言不允许结构体变量整体进行输入和输出,只能对结构体变量的成员进行输入和输出,gets(st1.name);scanf(%d%d%d,7.2.2 结构体变量的引用和初始化,一、结构体数组的引出,一个结构体变量只能存放一个学生的信息,对于多个学生的信息,可以使用一个结构体数组来存放,结构体数组的每个元素是一个结构体类型的变量,定义结构体数组的方法与定义普通数组的方法类似:结构体类型 数组名数组的长度;,7.3.1 结构体数组的定义,1、定义结构体数组(1)先定义结构体类型 再定义结构体数组 struct student char name10;int age;int s

10、1,s2;struct student st6;,(2)定义结构体类型的同时 定义结构体数组 struct student char name10;int age;int s1,s2;st6;,(3)直接定义结构体数组 struct char name10;int age;int s1,s2;st6;,不提倡使用该方法,7.3.1 结构体数组的定义,2、结构体数组的初始化将每个数组元素的数据用花括号 括起来,struct student char name10;int age;int s1,s2;struct student st3=Mary,21,78,86,Alex,20,90,80,Mi

11、ke,19,75,68;,7.3.2 结构体数组的初始化,说明:,struct student st=Mary,21,78,86,Alex,20,90,80,Mike,19,75,68;,7.3.2 结构体数组的初始化,1.如果对于数组中的元素全部赋值,长度可省,2.可部分赋初值。,struct student st3=Mary,21,78,86;,3.内层括号可省略,struct student st3=Mary,21,78,86,Alex,20,90,80,Mike,19,75,68;,struct student st3=Mary,21,78,86,0,Mike,19,75,68;,(2

12、)数组元素之间可以整体赋值 也可以将一个元素赋给一个相同类型的结构体变量struct student st3=Mary,21,78,86,Alex,;struct student x;st2=st0;x=st1;,3、结构体数组的引用(1)引用某个数组元素的成员 例:puts(st0.name);printf(%d,%d,st1.age,st1.s1);,(3)输入和输出操作只能对数组元素的成员进行,7.3.3 结构体数组的引用,例1 输入30个学生的信息,并输出,#include struct student int num;char name10;char sex;int age;int score;char institute20;void main()struct student s30;int i;,for(i=0;i30;i+)gets(si.name);gets(si.institute);scanf(%c%d%d%d,7.3.3 结构体数组的引用,作业,作业:P252 编程题 1,Class is over,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号