C语言程序设计8结构体.ppt
《C语言程序设计8结构体.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计8结构体.ppt(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 讲课提纲讲课提纲C语言程序设计语言程序设计 Chap.8 Chap.8 结构体、共同体结构体、共同体 和枚举类型和枚举类型 桂林电子科技大学桂林电子科技大学Chap.8 Chap.8 结构体结构体共同体共同体 和枚举类型和枚举类型 一一 概述概述 由不同类型的数据项组成的复合类型,称为由不同类型的数据项组成的复合类型,称为结构体类型结构体类型 成员项成员项结构体分量结构体分量 struct struct 结构体类型名结构体类型名 类型名类型名1 1 成员名表成员名表1;1;类型名类型名2 2 成员名表成员名表2;2;类型名类型名n n 成员名表成员名表n;n;8.1 8.1 结构体类型结构体
2、类型二二 结构体类型变量的定义结构体类型变量的定义 1 1 先后定义先后定义 先定义类型,后定义变量先定义类型,后定义变量 ExEx struct struct stustu long num;long num;char name20,sex;char name20,sex;int age;int age;float score;float score;char addr30;char addr30;2 2 同时定义同时定义 ExEx structstruct stu stu long num;long num;char name20,sex;char name20,sex;int age;i
3、nt age;float score;float score;char addr30;char addr30;s1,s2;s1,s2;3 3 直接定义直接定义 缺省结构体类型名缺省结构体类型名 ExEx structstruct long num;long num;char name20,sex;char name20,sex;int age;int age;float score;float score;char addr30;char addr30;s1,s2;s1,s2;structstruct stu s1,s2;stu s1,s2;结构体结构体2 2三三 结构体类型变量的初始化结构体
4、类型变量的初始化 struct stu s1=20101,struct stu s1=20101,Li PingLi Ping,M M,18,86,18,86,桂林桂林;四四 结构体类型变量的引用结构体类型变量的引用 成员成员 结构体变量名结构体变量名.成员名成员名五五 结构体数组结构体数组 ExEx struct stu s40;struct stu s40;结构体数组结构体数组:数组元素是结构体变量数组元素是结构体变量 先后定义先后定义 同时定义同时定义 直接定义直接定义 初始化初始化 struct stu s40=struct stu s40=20101,20101,Li PingLi
5、Ping,M M,18,86,18,86,桂林桂林,20102,20102,Wang YifeiWang Yifei,F F,19,95,19,95,柳州柳州 ;对对s0s0、s1s1赋初值赋初值六六 结构体指针结构体指针 struct struct 结构类型名结构类型名*结构体指针名结构体指针名 指向运算符和圆点运算符指向运算符和圆点运算符 (*p).(*p).成员名成员名 p-p-成员名成员名 p p是指针,不是结构体变量,不能写成是指针,不是结构体变量,不能写成:p.p.成员名成员名例题例题Ex802Ex802 struct person char name9;int age;struc
6、t person char name9;int age;struct person class10=struct person class10=JoinJoin,17,17,PaulPaul,19,19,M Maryary,18,18,AdamAdam,16;,16;class2.name0class2.name0Ex804 Ex804 struct stud struct stud char num6;char num6;int s4;int s4;double double aveave;6 68 822228 8+Ex803Ex803 struct ex int x;float y;ch
7、ar z;example;struct ex int x;float y;char z;example;A)struct A)struct是结构体类型的关键字是结构体类型的关键字 B)exampleB)example是结构体类型名是结构体类型名 C)x,y,z C)x,y,z都是结构体成员名都是结构体成员名 D)struct ex D)struct ex是结构体类型是结构体类型Ex801Ex801#include#include struct abc struct abc int a,b,c;int a,b,c;main()main()struct abc s2=1,2,3,4,5,6;int
8、 t;struct abc s2=1,2,3,4,5,6;int t;t=s0.a+s1.b;t=s0.a+s1.b;printf(printf(%dn%dn,t);,t);s0 s1s0 s1a b c a b ca b c a b cEx805Ex805#include#include struct ststruct st int x;int*y;*p;int x;int*y;*p;int dt4=10,20,30,40;int dt4=10,20,30,40;struct st aa4=50,&dt0,60,&dt1,70,&dt2,80,&dt3 ;struct st aa4=50,&
9、dt0,60,&dt1,70,&dt2,80,&dt3 ;main()main()p=aa;printf(p=aa;printf(%dn%dn,+(,+(p-xp-x););printf(printf(%dn%dn,(+p)-x);,(+p)-x);printf(printf(%dn%dn,+(*p-y);,+(*p-y);dt0dt0dt1dt1dt2dt2dt3dt3 100010001002100210041004100610061010202030304040p p aaaa 505010001000606010021002707010041004808010061006aa0.xaa
10、0.x .y .yaa1.xaa1.x .y .yaa2.xaa2.x .y .yaa3.xaa3.x .y .yEx806Ex806 以下程序用来输出结构以下程序用来输出结构 体变量体变量exex所占存储单元所占存储单元 的字节数的字节数#include#include struct st struct st char name20;double score;char name20;double score;main()main()struct st ex;struct st ex;printf(printf(ex size:%dnex size:%dn,);,);sizeof(ex)siz
11、eof(ex)+(+(p-xp-x)=)=5151例题例题(+(+p)-xp)-x=6060+(*+(*p-y)p-y)=21218.2 8.2 自定义类型自定义类型Ex2Ex2 typedef struct typedef struct int n;int n;char ch8;char ch8;PER;PER;A)PERA)PER是结构体变量名是结构体变量名 B)PERB)PER是结构体类型名是结构体类型名 C)structC)struct是结构体类型名是结构体类型名 D)typedef structD)typedef struct是结构体类型是结构体类型 Ex3Ex3 对结构体变量定义不
12、正确的是对结构体变量定义不正确的是 A)typedef struct aa B)#define AA struct aaA)typedef struct aa B)#define AA struct aa int n;AA int n;int n;AA int n;float m;float m;float m;float m;AA;tdl;AA;tdl;AA tdl;AA tdl;C)struct D)struct C)struct D)struct int n;int n;int n;int n;float m;float m;float m;float m;aa;tdl;aa;tdl;s
13、truct aa tdl;struct aa tdl;typedef typedef 类型名类型名1 1 类型名类型名2;2;类型名类型名1 1是是已有定义的类型标识符已有定义的类型标识符,类型名,类型名2 2是一个是一个用户定义的新用户定义的新 类型标识符类型标识符Ex1 Ex1 typedef int INTEGER;typedef int INTEGER;有了上面的定义以后有了上面的定义以后,INTEGER m,m;INTEGER m,m;等价于等价于 int m,m;int m,m;Ex807Ex807#include#include typedef structtypedef str
14、uct int a;char b;ST;int a;char b;ST;ST*fun(ST x)ST*fun(ST x)ST*px;ST*px;x.a=100;x.b=x.a=100;x.b=C C;px=&x;px=&x;return px;return px;main()main()ST y,*p;ST y,*p;y.a=999;y.b=y.a=999;y.b=X X;printf(printf(y.a=%d y.b=%cny.a=%d y.b=%cn,y.a,y.b);,y.a,y.b);p=fun(y);p=fun(y);printf(printf(*p).a=%d (*p).b=%c
15、n(*p).a=%d (*p).b=%cn,(*p).a,p-b);,(*p).a,p-b);Ex808Ex808#include#include#define N 5#define N 5 typedef struct typedef struct char name20;char num10;USER;char name20;char num10;USER;getdata(USER*sp)getdata(USER*sp)int i;int i;printf(printf(Enter name&phone number:nEnter name&phone number:n););for(i=
16、0;iN;i+)gets(spi.name);gets(spi.num);for(i=0;iN;i+)gets(spi.name);gets(spi.num);/*/*输入时,姓名与电话号码各占一行输入时,姓名与电话号码各占一行 */*/例题例题例题例题outdata(USER*sp)outdata(USER*sp)int i;int i;printf(printf(After sorted:nAfter sorted:n););for(i=0;iN;i+)for(i=0;iN;i+)printf(printf(%s,%sn%s,%sn,spi.name,spi.num);,spi.name,
17、spi.num);getsort(USER*sp)getsort(USER*sp)int i,j,k;USER temp;int i,j,k;USER temp;for(i=0;iN-1;i+)for(i=0;iN-1;i+)k=i;k=i;for(j=i+1;jN;j+)for(j=i+1;j0)k=j;if(strcmp(spk.name,spj.name)0)k=j;temp=spk;spk=spi;spi=temp;temp=spk;spk=spi;spi=temp;main()main()USER spN,temp;USER spN,temp;getdata(sp);getsort(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 结构
限制150内