欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    《c语言程序设计基础》7构造数据类型.ppt

    • 资源ID:5896099       资源大小:267.50KB        全文页数:84页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    《c语言程序设计基础》7构造数据类型.ppt

    第7章 构造数据类型,第7章 构造数据类型,本章内容,7.2 结构体与结构体类型变量的定义,7.3 结构体变量的使用及初始化,7.4 结构体数组,7.1 构造数据类型概述,7.5 结构体指针,第7章 构造数据类型,本章内容,7.7 共用体,7.8 枚举类型,7.9 用typedef定义类型,7.6 结构体作函数参数,7.1 构造数据类型概述,构造数据类型是C语言的一个特色,它是由一些简单数据类型构造而来的。前面所学的数组就是其中最基本的的一种。数组是由若干类型相同的元素构成,在内存中占用一块连续的区域并且按顺序存放,例如学生成绩单、字符串、矩阵、数据表格等都可以用数组来表示,它们的元素具有同样的数据类型。但在实际程序设计中,我们经常要把一些类型不同却又紧密联系的数据项组织在一起加以处理。,7.2 结构体与结构体类型变量的定义,本节内容,7.2.2 结构体变量的定义,7.2.1 结构体的定义,7.2.1 结构体的定义,就本质而言,结构体是一种较为复杂的构造类型数据。它是由若干不同类型的数据项组成,构成结构体的各个数据项称为结构体成员也叫成员变量。在使用结构体类型前我们首先要对结构体内所包含信息作一说明,即定义结构体。,struct 结构体名 数据类型1 成员名1;数据类型2 成员名2;数据类型n 成员名n;,7.2.1 结构体的定义,struct为关键字,它表示一个结构体定义的开始,它与其后的结构体名一起代表某一特定的结构体类型。结构体名是由用户自己定义的合法标识符。成员表列由一对花括号括起来,其中每个成员都是该结构体的一个组成部分,并且必须列出其类型和变量的名称。结构体中各成员之间用分号隔开。并且结构体定义也是用分号作为结束标志的,此处的分号不能省略,因为结构体定义在程序中就是一条说明语句。,7.2.1 结构体的定义,在定义结构体时,有以下几点说明:定义结构体类型只是说明该类结构体数据的组织形式,在程序编译时系统不会给结构体类型分配空间,只有定义了结构体变量,系统为该结构体变量分配空间。,struct date int year;int month;int day;struct date da1,da2;,7.2.1 结构体的定义,结构体成员可以是任何基本数据类型的变量,如int、char、float、double等,也可以是数组、指针类型的变量。这些成员变量可以是同一类型也可以是不同类型。,struct student int num;char name20;int*age;char sex;float score4;,7.2.1 结构体的定义,结构体类型可以嵌套定义,即结构体成员也可以是结构体类型的变量。,struct student int num;car name20;int age;char sex;struct date int year;int month;int day;birthday;,struct date int year;int month;int day;struct student int num;char name20;int age;char sex;struct date birthday;,7.2.2 结构体变量的定义,为了能够在程序中使用结构体类型,必须定义结构体类型的变量,定义结构体变量的方法主要有以下四种:先定义结构体类型,再定义结构体变量。,struct studentint num;char name20;char sex;float score5;struct student stu1,stu2;,7.2.2 结构体变量的定义,在定义结构类型的同时定义结构体变量。直接说明结构体变量。,struct studentint num;char name20;char sex;float score5;stu1,stu2;,structint num;char name20;char sex;float score5;stu1,stu2;,7.2.2 结构体变量的定义,先使用typedef定义结构体类型,给结构体类型起别名,再用别名定义结构体变量。这样在定义结构体变量的时候就可以既使用新的类型studentinfo来定义变量,又可以用struct student 来定义变量,,typedef struct studentint num;char name20;char sex;float score5;studentinfo;studentinfo stu1,stu2;,typedef struct int num;char name20;char sex;float score5;studentinfo;,7.2.2 结构体变量的定义,按照结构体类型的组成,系统为定义的结构体变量分配内存单元。结构体变量的各个成员在内存中占用连续存储区域,结构体变量所占内存大小为结构体中每个成员所占用内存的长度之和。以上定义的结构体变量各成员所占内存单元如表所示(以VC环境为例):,7.3 结构体变量的使用及初始化,本节内容,7.3.2 结构体变量的初始化,7.3.1 结构体变量的使用,7.3.1 结构体变量的使用,结构体作为一种新的数据类型,在定义结构体变量之后,可以像基本类型变量一样赋值、运算,不同的是结构体变量不能整体引用,只能引用它的成员变量。7.3.1.1 结构体成员变量使用的一般方式结构体变量名.成员名birthday.year、birthday.month、birthday.day,birthday.year=1988;birthday.month=2;birthday.day=14,7.3.1 结构体变量的使用,可以将一个结构体变量赋值给另一个结构体变量。进行赋值的结构体变量必须是同一类型的结构体变量。如果stu1已经赋值,则可以通过语句stu2=stu1将stu1的值赋给同类型的结构体变量stu2。,struct studentint num;char name20;char sex;float score5;struct student stu1,stu2;,7.3.1 结构体变量的使用,#include typedef struct char name10;int age;STD;STD fun(STD std,int n)STD max;int i;max=std1;for(i=0;in;i+)if(max.agestdi.age)max=stdi;return max;main()STD std5=A01,18,A02,17,A03,16,A04,17,A05,19;STD max;max=fun(std,5);printf(The result:);printf(nName:%s,Age:%dn,max.name,max.age);,7.3.1 结构体变量的使用,7.3.1.2 嵌套结构体中成员变量的使用对于嵌套的结构体,如果要使用内部嵌套的结构体的成员变量,则需要连续的使用“.”运算符。使用内部结构体的成员变量month用“stu1.date.month”的形式。,struct student int num;char name20;struct date int month;int day;int year;birthday;stu1,stu2;,7.3.1 结构体变量的使用,#include typedef struct int num;char name10;char sex;struct int year,month,day;birthday;float score3;STU;void show(STU tt)/定义函数show int i;printf(%d%s%c%d-%d-%d,tt.num,tt.name,tt.sex,);for(i=0;i3;i+)printf(%5.1f,tt.scorei);printf(n);main()STU std=1,LiuYang,M,1980,5,18,82.5,69.0,85.0;printf(A student data:n);show(std);,7.3.2 结构体变量的初始化,对应结构体变量的定义形式,结构体变量初始化也有四种方法:,方法一:struct 结构体名 类型名 成员名;类型名 成员名;.;struct 结构体名 结构体变量=初值表;,方法二:struct 结构体名 类型名 成员名;类型名 成员名;.结构体变量=初值表;,方法三:struct 类型名 成员名;类型名 成员名;.结构体变量=初值表;,方法四:typedef struct 结构体名 类型名 成员名;类型名 成员名;.结构体名1;结构体名1 结构体变量=初值表;,初始表中数据的个数应和成员项一致,各初值间用逗号隔开。按成员的先后顺序对应赋值,如果初值个数少,则将无初值对应的成员赋以0值。如果初值个数多,则编译出错。有嵌套结构的结构体类型,赋初值也一一对应。,struct date int year,month,day;struct student char num8,name20,sex;struct date birthday;float score;a=“0506011,Liu Qing,M,1980,12,9,83,b=“0508015,Zhao Ying,F,1981,3,20,86,c;,#include struct student int num;char*name;char sex;float score;stu2,stu1=1002,Liu Qing,M,82.5;/定义全局结构变量main()stu2=stu1;printf(Number=%dnName=%sn,stu2.num,stu2.name);printf(Sex=%cnScore=%fn,stu2.sex,stu2.score);,#include main()struct student/定义结构 int num;char*name;char sex;float score;stu2,stu1=1002,Liu Qing,M,82.5;/定义局部结构变量stu2=stu1;printf(Number=%dnName=%sn,stu2.num,stu2.name);printf(Sex=%cnScore=%fn,stu2.sex,stu2.score);,7.4 结构体数组,本节内容,7.4.2 结构体数组的初始化,7.4.3 结构体数组的使用,7.4.1 结构体数组的定义,7.4.1 结构体数组的定义,先定义结构体类型,再定义结构体数组。在定义结构类型的同时说明结构体数组。,struct student int num;char name20;char sex;int age;struct student stu2;,struct studentint num;char name20;char sex;float score;stu5;,7.4.1 结构体数组的定义,直接说明结构体数组。使用typedef定义结构体类型,再定义数组。,struct int num;char name20;char sex;int age;stu2;,typedef struct student int num;char name20;char sex;int age;studentinfo;studentinfo stu2;,7.4.2 结构体数组的初始化,定义结构体类型时初始化结构体数组。,struct 结构体名成员表;数组名大小=初值表;,struct studentint num;char*name;char sex;float score;stu5=101,Li ping,M,45,102,Zhang ping,M,62.5,103,He fang,F,92.5,104,Cheng ling,F,87,105,Wang ming,M,58;,先定义结构体类型,然后定义结构体数组并初始化。,struct 结构名 成员表;;struct 结构名 数组名大小=初值表;,struct student int num;char*name;char sex;float score;struct student stu5=101,Li ping,M,45,102,Zhang ping,M,62.5,103,He fang,F,92.5,104,Cheng ling,F,87,105,Wang ming,M,58;,7.4.3 结构体数组的使用,可以把一个数组元素赋予另一个数组元素,从而实现结构变量之间的整体赋值。students3=students2;可以单独地把一个结构体数组元素中的一个成员的值赋予另一数组元素中的一个同类型的成员。students3.num=students2.num一旦定义了一个结构体数组,编译时就为它分配一片连续的内存空间。和其他类型的数组一样,各数组元素是连续存放的,只是结构体数组的元素是定义过的结构体类型数据。,#include struct student int num;char*name;char sex;float score;stu5=101,Li ping,M,45,102,Zhang ping,M,62.5,103,He fang,F,92.5,104,Cheng ling,F,87,105,Wang ming,M,58;,7.4.3 结构体数组的使用,main()int i,c=0;float ave,sum=0;for(i=0;i5;i+)sum+=stui.score;if(stui.score60)c+=1;printf(sum=%fn,sum);ave=sum/5;printf(average=%fncount=%dn,ave,c);,#includestdio.h#define NUM 3struct mem char name20;char phone10;main()struct mem peopNUM;int i;for(i=0;iNUM;i+)printf(input name:n);gets(mani.name);printf(input phone:n);gets(peopi.phone);printf(namettphonen);for(i=0;iNUM;i+)printf(%stt%sn,peopi.name,peopi.phone);,7.5 结构体指针,本节内容,7.5.2 指向结构体数组的指针,7.5.1 结构体指针的定义及使用,7.5 结构体指针,结构体变量被定义后,系统为其在内存中分配一片连续的存储单元。该片内存单元的起始地址称为该结构体变量的指针。如果我们定义一个指针变量,用来存放这个地址,就称该指针变量为指向结构体的指针变量,简称结构体指针。,7.5.1 结构体指针的定义及使用,先定义结构体类型,再定义结构体指针。在定义结构类型的同时说明结构体指针。,struct student int num;char name20;char sex;int age;struct student stu1,*pstu;,struct studentint num;char name20;char sex;float score;stu1,*pstu;,7.5.1 结构体指针的定义及使用,直接说明结构体指针。用typedef定义结构体类型,再定义结构体指针。,struct int num;char name20;char sex;int age;stu1,*pstu;,typedef struct student int num;char name20;char sex;int age;studentinfo;studentinfo stu1,*pstu;,经过上面定义之后,此时pstu尚未指向任何具体的对象,是所谓的野指针。要使pstu指向stu1,则须:pstu=&stu1。如图所示,pstu为指向结构体变量stu1的指针变量。结构体指针变量pstu中的值是所指向的结构体变量stu1的首地址。,通过结构体指针变量,可以方便地访问结构体变量的各个成员。常用的方式有两种:利用间接成员运算符“-”来存取结构体成员,其一般引用形式是:指针变量名-结构体成员名pstu已经指向结构体变量stu1,把1121赋予stu1中的成员num,可用以下形式:pstu-num=1121;把字符串“Liu Qing”的首地址赋予stu1中的name:pstu-name=Liu Qing;,利用间接访问运算符“*”来存取所指向结构体变量的成员,其一般引用形式是:(*指针变量名).成员名(*pstu).name=Liu Qing;执行后,就使pstu所指向的结构体变量(即stu1)中成员name指向字符串Liu Qing。(*指针变量名)的圆括号是必须有。如果去掉圆括号,则成为*p.name的形式,由于结构体成员运算符“.”的优先级高于间接访问运算符“*”,该表达式实际上就等价于*(p.name),这与原来表达式的含义是完全不同的。,#includestdio.hstruct studentint num;char*name;char sex;float score;stu1=102,Liu Qing,M,78.5,*pstu;main()pstu=,存取结构体成员的方式有三种等价形式:直接利用结构体变量名,其一般形式是:结构变量名.成员名利用指向结构体变量的指针变量和间接成员运算符,其一般形式是:指针变量名-成员名利用指向结构体变量的指针变量和间接访问运算符,其一般形式是:(*指针变量名).成员名,7.5.2 指向结构体数组的指针,结构体指针也可以指向一个结构体数组,这时结构体指针变量的值是整个结构体数组的首地址。结构体指针变量也可指向结构体数组中的某一个元素,这时结构体指针变量的值是该结构体数组元素的首地址。设pstu为指向结构体数组的指针变量,则pstu也指向该结构体数组的0号元素,pstu+1指向1号元素,pstu+i则指向i号元素。在程序中既可以利用数组下标形式访问一个数组元素,也可以通过指针变量的操作来存取结构数组元素。,struct student int num;char name20;char sex;int age;struct student stu5;struct student*pstu;pstu=通过pstu+,pstu+i,pstu-i等,就可以遍历整个数组。pstu+是表示结构体指针变量pstu向后移动一个“位置”,增加所指对象的字节数。,#includestdio.hstruct student int num;char name20;char sex;float score;stu5=1101,Liu Qing,M,76,1102,Zhao Hui,M,85.5,1103,Yang Jing,F,69.5,1104,Wu Fang,F,91,1105,Deng Chao,M,64.5;main()struct student*pstu;printf(NotNametttSextScoretn);for(pstu=stu;pstunum,pstu-name,pstu-sex,pstu-score);,#includestdio.hstruct list int i;char name4;float w;tab4=1,H,1.008,2,He,4.0026,3,Li,6.941,4,Be,9.01218;main()struct list*p;printf(NotNametAtomic Weightn);for(p=tab;pi,p-name,p-w);,7.6 结构体作函数参数,本节内容,7.6.2 结构体指针作函数参数,7.6.1 结构体成员变量作函数参数,7.6.1 结构体成员变量作函数参数,#includestruct data int a,b,c;void func(struct data parm);main()struct data arg;arg.a=27;arg.b=3;arg.c=arg.a+arg.b;printf(arg.a=%d arg.b=%d arg.c=%dn,arg.a,arg.b,arg.c);printf(Call Func().n);func(arg);printf(arg.a=%d arg.b=%d arg.c=%dn,arg.a,arg.b,arg.c);,结构体变量作函数参数实现调用函数与被调用函数之间的“数值”传递。,7.6.1 结构体成员变量作函数参数,void func(struct data parm)printf(parm.a=%d parm.b=%d parm.c=%dn,parm.a,parm.b,parm.c);printf(Process.n);parm.a=18;parm.b=5;parm.c=parm.a*parm.b;printf(parm.a=%d parm.b=%d parm.c=%dn,parm.a,parm.b,parm.c);printf(Return.n);,7.6.2 结构体指针作函数参数,#includestruct data int a,b,c;void func(struct data*parm);main()struct data arg;arg.a=27;arg.b=3;arg.c=arg.a+arg.b;printf(arg.a=%d arg.b=%d arg.c=%dn,arg.a,arg.b,arg.c);printf(Call Func().n);func(,将上例改用结构体指针变量作参数,分析程序运行结果。,7.6.2 结构体指针作函数参数,void func(struct data*parm)printf(parm-a=%d parm-b=%d parm-c=%dn,parm-a,parm-b,parm-c);printf(Process.n);parm-a=18;parm-b=5;parm-c=parm-a*parm-b;printf(parm-a=%d parm-b=%d parm-c=%dn,parm-a,parm-b,parm-c);printf(Return.n);,7.7 共用体,本节内容,7.7.2 共用体变量的赋值和引用,7.7.1 共用体及共用体变量的定义,7.7 共用体,共用体的特点是将不同类型的变量,例如整型、字符型、实型等放在同一地址开始的内存单元中,虽然各变量在内存中占的字节数不同,但都从同一地址开始。例如学校对教师和学生所作的信息统计表,对“单位”一项学生应填入班级编号可用整型量表示,教师应填入某系某教研室只能用字符类型。要求把这两种类型不同的数据都填入“单位”这个变量中,就必须把“单位”定义为既可存放整型数据又可存放字符型数组这两种类型的“共用体”。,7.7.1 共用体及共用体变量的定义,定义共用体类型的一般形式为:union 共用体名成员表;,union dataint clas;char office10;,7.7.1 共用体及共用体变量的定义,先定义共用体类型,再定义共用体变量。定义共用体类型的同时定义共用体变量。,union dataint clas;char office 10;union data a,b;,union data int clas;char office10;a,b;,7.7.1 共用体及共用体变量的定义,直接定义共用体变量。使用typedef定义共用体类型再定义共用体变量。,union int clas;char office10;a,b;,typedef union ata1 int clas;char office 10;data;data1 a,b;,经定义后的a、b变量均为data类型。它们的内存分配如图所示。a、b变量的长度应等于data 的成员中最长的长度,即等于office数组的长度,共10个字节。a,b变量如赋予整型值时,只使用了4个字节,而赋予字符数组时,可用10个字节。一个共用体变量的长度等于各成员中最长的长度,在共用体中各成员变量的值并不是同时存在的,在同一时刻只能有一个变量值存在,如果给其它变量赋值,则原先变量的值被覆盖。,7.7.2 共用体变量的赋值和引用,对共用体变量的赋值、使用都只能通过对变量的成员进行,而不能直接对共用体变量赋值,也不能直接引用共用体变量。通常使用运算符“.”引用共用体的成员变量,例如:a.clas=3;注意在这种情况下,共用体变量a的当前成员变量为clas,其值为3,此时a的另一成员变量office的值是无意义的。,7.7.2 共用体变量的赋值和引用,还可以通过指向共用体变量的指针引用共用体变量的成员。不能对共用体变量的所有成员变量进行初始化,只能对成员列表中的第一个变量进行初始化。,union data int clas;char office10;a,*p;p=,union data int clas;char office10;a=3;等价于a.clas=3,7.7.2 共用体变量的赋值和引用,在程序中依次为共用体成员赋值,则最后赋值的成员值有效。,#include#include union data int classes;char office10;a;main()strcpy(a.office,CS);a.classes=3;printf(%dn,a.classes);printf(%sn,a.office);,7.7.2 共用体变量的赋值和引用,#includemain()struct char name10;int age;char job;union int clas;char office10;dept;info2;int n,i;,7.7.2 共用体变量的赋值和引用,for(i=0;i2;i+)printf(input name,age,job and departmentn);scanf(%s%d%c,infoi.name,7.7.2 共用体变量的赋值和引用,for(i=0;i2;i+)if(infoi.job=s)printf(%st%3dt%3ct%dn,infoi.name,infoi.age,infoi.job,infoi.dept.clas);else printf(%st%3dt%3ct%sn,infoi.name,infoi.age,infoi.job,infoi.dept.office);,7.8 枚举类型,本节内容,7.8.2 枚举类型变量的赋值和引用,7.8.1 枚举类型枚举变量的定义,7.8 枚举类型,在实际处理问题中,经常会有取值被限定在一个有限的范围内的类型出现。例如,一个星期内只有七天,一年只有十二个月等等。为了便于对这些类型数据的处理,语言提供了一种称为“枚举”的类型。利用枚举类型,可以直观的体现枚举变量的含义和取值限制,在定义枚举类型时,列举出所有可能的取值,被说明为该“枚举”类型的变量取值不能超过定义的范围。,7.8.1 枚举类型枚举变量的定义,7.8.1.1 枚举类型的定义枚举类型定义的一般形式为:enum 枚举名 枚举值表;在枚举值表中罗列出所有可用值,称为枚举元素。enum weekday sun,mon,tue,wed,thu,fri,sat;,7.8.1.2 枚举变量的定义 同结构体和共用体一样,枚举变量也可用不同的方式定义:,enum weekday;enum weekday a,b,c;,enum weekdaya,b,c;,enuma,b,c;,typedef enum weekday week;week a,b,c;,7.8.2 枚举类型变量的赋值和引用,在C语言中对枚举类型数据有如下规定:枚举值是常量,不是变量。所以不能在程序中用赋值语句再对它赋值。例如对枚举weekday的元素再作以下赋值:“sun=5;mon=2;sun=mon;”都是错误的。枚举元素本身由系统定义了一个表示序号的数值,从0 开始顺序定义为0,1,2。如在weekday中,sun值为0,mon值为1,sat值为6。,7.8.2 枚举类型变量的赋值和引用,#includemain()enum weekday sun,mon,tue,wed,thu,fri,sat a,b,c;a=sun;b=mon;c=tue;printf(%d,%d,%d,a,b,c);,7.8.2 枚举类型变量的赋值和引用,可以把某个枚举元素规定为指定的整常数:enum weekday sun,mon,tue,wed=10,thu,fri,sat;编译程序对wed之前的枚举元素照常从0开始,递增赋予整常数,即sun的值为0,mon的值为1,tue的值为2,并对wed赋予指定值10,然后对wed之后的值在wed的基础上递增赋值,即thu的值为11,fri为12,sat为13。,7.8.2 枚举类型变量的赋值和引用,只能把枚举值赋予枚举变量,不能把元素的数值直接赋予枚举变量。如:“a=sum;b=mon;”是正确的。而:“a=0;b=1;”是错误的。如一定要把数值赋予枚举变量,则必须用强制类型转换,如:“a=(enum weekday)2;”其意义是将顺序号为2的枚举元素赋予枚举变量a,相当于:“a=tue;”另外枚举元素不是字符常量也不是字符串常量,使用时不要加单、双引号。,7.8.2 枚举类型变量的赋值和引用,#includemain()enum body a,b,c,d month31,j;int i;j=a;for(i=1;id)j=a;,7.8.2 枚举类型变量的赋值和引用,for(i=1;i=30;i+)switch(monthi)case a:printf(%2d%ct,i,a);break;case b:printf(%2d%ct,i,b);break;case c:printf(%2d%ct,i,c);break;case d:printf(%2d%ct,i,d);break;default:break;printf(n);,7.9 用typedef定义类型,本节内容,7.9.2 类型定义的使用,7.9.1 typedef定义类型的一般格式,7.9 用typedef定义类型,为了提高程序的可读性及可移植性,语言在已有各种数据类型的基础上,还允许用户自己定义类型说明符,也就是说允许由用户为数据类型取“别名”。这个功能是由类型定义符typedef来完成的。,7.9.1 typedef定义类型的一般格式,typedef定义类型的一般形式为:typedef 原类型名 新类型名 其中原类型名可以是C语言提供的任一数据类型,新类型名代表这个类型的别名,一般用大写表示,以便于区别。例如:typedef int INTEGERtypedef只是给已有数据类型起了一个“别名”,并不是重新定义一种新的数据类型。用typedef定义数组、指针、结构等复杂类型将带来很大的方便。,例如:“typedef char NAME20;”表示NAME是字符数组类型,数组长度为20。然后可用NAME 说明变量,即:“NAME a1,a2,s1,s2;”完全等效于:“char a120,a220,s120,s220;”。,typedef struct int num;char name20;char sex;float score5;STU;,STU是定义的新类型名,它代表上述的一个结构体类型。可以用STU定义变量:“STU stu50;”表示定义了此结构体类型的结构体数组;而STU*p表示p是指向该结构体类型数据的指针。,7.9.2 类型定义的使用,使用类型定义时,有以下问题需要注意:typedef只是为C语言的原有数据类型定义了一个别名,并没有产生一个新的数据类型,原数据类型仍然可以使用。建议在程序中完全使用定义的类型名,而不使用原类型名。使用typedef定义的别名,不能作为变量使用。有时也可用宏定义来代替typedef的功能,但是宏定义是由预处理完成的,而typedef则是在编译时完成的,后者更为灵活方便。用typedef定义的数据类型通常单独放在一个文件中,然后在需要的时候,用“#inlucde”将它们包含进去。引入类型定义的目的不仅仅是为了提高程序的可读性,更是为了提高程序的安全性和可移植性。,7.9.2 类型定义的使用,#include#include#define N 10typedef struct ss char num10;int s;STU;fun(STU a,STU*s)/定义函数funint i,max,p;max=-1000;p=0;for(i=0;imax)p=i;max=ai.s;*s=ap;,7.9.2 类型定义的使用,main()STU aN=A01,81,A02,89,A03,66,A04,87,A05,77,A06,90,A07,79,A08,61,A09,80,A10,71,m;int i;printf(*The original data*n);for(i=0;i N;i+)printf(No=%s Mark=%dn,ai.num,ai.s);fun(a,7.9.2 类型定义的使用,

    注意事项

    本文(《c语言程序设计基础》7构造数据类型.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开