第6章其他数据类型.ppt
《第6章其他数据类型.ppt》由会员分享,可在线阅读,更多相关《第6章其他数据类型.ppt(54页珍藏版)》请在三一办公上搜索。
1、第6章 其他数据类型,学习目标,结构体的定义与使用结构体与指针共用体的定义与使用枚举类型的定义与使用typedef定义数据类型位运算规则,6.1 结构体,引入:数据的基本类型:整、实、字符。数组是构造类型:每个元素为同一类型,有些问题仅用基本类型和数组来描述是无法实现的?,举例:如学生情况表,这些数据类型虽不相同,但它们却是有机的整体,若将它们分别定义,则难以反映它们之间的内在联系。如何解决呢?用结构体。,结构体是一种构造数据类型用途:把不同类型的数据组合成一个整体,又称自定义数据类型结构体类型定义,struct 结构体类型名 类型标识符 成员名;类型标识符 成员名;,成员类型可以是基本型或构
2、造型,struct是关键字,不能省略,合法标识符,可根据情况省略,6.1.1 结构体类型的定义,Struct studentint num;char name20;char sex;int age;float score;char addr30;,结构体类型定义,描述结构的组织形式,不分配内存,以上语句的作用是:定义了一个名为student的结构体类型,它具有以下结构:,6.1.2 结构体变量,(1)结构体类型变量的声明间接法:先声明结构体类型再定义变量名,struct 结构体名类型标识符成员名;类型标识符成员名;struct 结构体名 变量名表列;,直接法:在声明结构体类型的同时定义变量,s
3、truct 结构体名类型标识符成员名;类型标识符成员名;.变量名表列;,struct studentint num;char name20;char sex;int age;float score;char addr30;stu1,stu2;,struct int num;char name20;char sex;int age;float score;char addr30;stu1,stu2;,省去结构体类型名,用无名结构体直接定义变量只能一次。,说明:1.结构体类型与结构体变量概念不同2.结构体可嵌套,sturct date int month;int day;int year;,str
4、uct studentint num;char name20;char sex;struct date birthday;float score;char addr30;student1,student2;,说明:3.结构体成员名与程序中变量名可相同,不会混淆(2)结构体变量的引用:结构体变量.成员如:student1.num=1;strcpy(student1.name,“ZhangHua);student1.sex=M;student1.birthday.year=1980,如果某成员本身又是一个结构体类型,则要用若干个成员运算符,一级一级找到最低一级的成员。成员运算符“.”的结合性为从左
5、到右。如:student1.birthday.year结构体变量的成员可以像普通变量一样进行各种运算。例如:student1.birthday.day+;sum=student1.score+5;,可以引用结构体变量成员的地址,也可以引用结构体变量的地址。如:,struct 结构体类型名 类型标识符 成员名;类型标识符 成员名;.;struct 结构体名 结构体变量=初始数据;,struct ss int num;char name20;char sex;int age;char addr30;struct ss stu1=112,“Wang Lin”,M,19,“200 Beijing Ro
6、ad”;,(3)结构体变量的初始化,形式二:,struct 结构体类型名 类型标识符 成员名;类型标识符 成员名;.结构体变量=初始数据;,struct ss int num;char name20;char sex;int age;char addr30;stu1=112,“Wang Lin”,M,19,“200 Beijing Road”;,结构体类型名ss可以省略,(4)求结构体变量占用内存的大小 求变量或类型说明符占用内存大小可以使用sizeof运算符。sizeof是单目运算符,其功能是求出变量或类型说明符所占的内存空间的字节数。使用的一般形式为:sizeof(变量或类型说明符);,c
7、har str20;struct date int year,month,day;today;struct address char name30,street40,city20;unsigned long int zip;wang;printf(char:%dt,sizeof(char);printf(str:%dt,sizeof(str);printf(date:%dt,sizeof(struct date);printf(wang:%dn,sizeof(wang);,6.1.3 结构体数组,(1)定义结构体数组:三种形式,形式一:struct student int num;char n
8、ame20;char sex;int age;struct student stu2;,形式二:struct student int num;char name20;char sex;int age;stu2;,形式三:struct int num;char name20;char sex;int age;stu2;,(2)结构体数组的初始化,struct int num;char name20;char sex;int age;stu.=.,.,.;,(3)结构体数组元素、成员引用引用方式:结构体数组名下标.成员名,struct student int num;char name20;cha
9、r sex;int age;str3;,stu1.age+;,strcpy(stu0.name,”ZhaoDa”);,#include#include struct person char name20;int count;lead3=Li,0,Zhang,0,Wang,0;void main()int i,j;char leader_name20;for(i=1;i=10;i+)/10张选票 scanf(%s,leader_name);for(j=0;j3;j+)/每张选票与3个候选人姓名对比 if(strcmp(leader_name,leadj.name)=0)leadj.count+;
10、for(i=0;i3;i+)printf(%5s:%dn,leadi.name,leadi.count);,统计选票,例6.3简单的密码加密程序。根据加密表中的对应关系,将输入的文字加密输出,对于表中未出现的字符则不加密,原样输出。,#include struct table char input,output;struct table translate=a,d,b,w,c,k,d,;,e,i,i,a,k,b,;,c;,void main()char ch;int str_long,i;str_long=sizeof(translate)/sizeof(struct table);/*计算加
11、密元素个数*/while(ch=getchar()!=n)for(i=0;translatei.input!=ch,6.2 结构体与指针,6.2.1 指向结构体变量的指针定义形式:struct 结构体名*结构体指针名;,struct student int num;char name20;char sex;int age;stu;struct student*p=,存放结构体变量在内存的起始地址,使用结构体指针变量引用成员:,若有:struct student stu1;struct student*p=,结构体变量名.成员名(*结构体指针名).成员名 结构体指针名-成员名,注意:”.“用于结
12、构体变量访问成员而“-”用于结构体指针变量访问成员。使用中要注意两者的优先级与结合性问题。,p-n 得到p指向的结构体变量中的成员n的值。p-n+得到p指向的结构体变量中的成员n的值,用完该值后使它加1。+p-n 得到p指向的结构体变量中的成员n的值使之加1(先加)。,构造数据类型,也叫联合体几个不同类型的变量共占一段内存(相互覆盖)定义形式,6.3 共用体,union 共用体类型名 类型标识符 成员名;类型标识符 成员名;.;,除去关键字,其形式和结构体定义一致,union data char ch;int i;float f;,union data int i;char ch;float
13、f;a,b;,union data int i;char ch;float f;union data a,b,c,*p,d3;,共用体变量的定义:,由于是共用一段内存,因此:共用体变量任何时刻只有一个成员存在 共用体变量定义分配内存长度是最长成员所占字节数,共用体变量引用,union data int i;char ch;float f;union data a,b,c,*p,d3;,a.i,a.ch,a.fp-i,p-ch,p-f(*p).i,(*p).ch,(*p).fp-i,p-ch,p-fd0.i,d0.ch,d0.f,共用体变量名.成员名(*共用体指针名).成员名共用体指针名-成员名
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 其他 数据类型
链接地址:https://www.31ppt.com/p-5935953.html