结构体 东南大学朱金付老师作品PPT学习教案_第1页
结构体 东南大学朱金付老师作品PPT学习教案_第2页
结构体 东南大学朱金付老师作品PPT学习教案_第3页
结构体 东南大学朱金付老师作品PPT学习教案_第4页
结构体 东南大学朱金付老师作品PPT学习教案_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、会计学1结构体结构体 东南大学朱金付老师作品东南大学朱金付老师作品struct 结构体名结构体名 成员列表成员列表 ;struct student int num; char name20; char sex; char addr30; ;结构体名结构体名关键字关键字不同数据不同数据类型组成类型组成的的成员成员分号不能少分号不能少第1页/共30页定义结构体类型变量的方法定义结构体类型变量的方法一、先定义结构体类型再定义变量名一、先定义结构体类型再定义变量名struct student int num; char name20; char sex; int age; float score; c

2、har addr30;struct student student1, student2;结构体类型名结构体类型名变量变量1变量变量2结构体类型只是一种数据结构体类型只是一种数据类型,不占内存空间,只类型,不占内存空间,只有定义结构体类型有定义结构体类型变量变量时时才开辟内存空间。才开辟内存空间。第2页/共30页# define STUDENT struct student STUDENT int num; char name20; char sex; int age; float score; char addr30; ; STUDENT student1,student2;凡是凡是STUD

3、ENT的地的地方都用方都用struct student 机械替换。机械替换。第3页/共30页二、在定义类型的同时定义变量二、在定义类型的同时定义变量struct student int num; char name20; char sex; int age; float score; char addr30; student1, student2;struct struct 结构体名结构体名 成员列表成员列表 变量名列表;变量名列表; 紧接着定紧接着定义变量义变量第4页/共30页三、直接定义结构体类型变量三、直接定义结构体类型变量struct int num; char name20; cha

4、r sex; int age; float score; char addr30; student1, student2;struct 成员列表成员列表 变量名列表;变量名列表; 不出现结构体名。不出现结构体名。第5页/共30页2 2、在编译时,仅对、在编译时,仅对变量变量分配空间,不对分配空间,不对类型类型分配空间。分配空间。1 1、结构体类型的变量在内存、结构体类型的变量在内存依照其成员的顺依照其成员的顺序序顺序排列,所占内存空间的大小是其全体成顺序排列,所占内存空间的大小是其全体成员所占空间的员所占空间的总和总和。3 3、对结构体中各个成员可以单独引用、赋值、对结构体中各个成员可以单独引

5、用、赋值,其作用与变量等同。,其作用与变量等同。格式:格式:变量名变量名 . . 成员名成员名 student1 . numstudent1 . num第6页/共30页4 4、结构体的成员可以是另一个结构体类型。、结构体的成员可以是另一个结构体类型。struct date int month; int day; int year; ;struct student int num; char name20; struct date birthday; ;成员类型成员类型成员名成员名5 5、成员名可以与程序中的变量名相同,二者分占不同、成员名可以与程序中的变量名相同,二者分占不同的内存单元,互不干

6、扰。例如,在程序中仍可以定义的内存单元,互不干扰。例如,在程序中仍可以定义变量变量 int num;int num;第7页/共30页结构体类型变量的引用结构体类型变量的引用1 1、不能对结构体变量整体赋值或输出,只能分别对、不能对结构体变量整体赋值或输出,只能分别对各个成各个成员员引用。引用。scanf(“%student”,&student1);scanf(“%student”,&student1);scanf(“%d”,&student1.num); scanf(“%d”,&student1.num); student1.num=100;student1.num=100;可以将一个结构体变

7、量可以将一个结构体变量整体整体赋给另外一个相同类型的赋给另外一个相同类型的结构体变量。结构体变量。 student2=student1;student2=student1;错误错误必须用成员名引用必须用成员名引用第8页/共30页2 2、嵌套的结构体变量必须逐层引用。、嵌套的结构体变量必须逐层引用。student1.student1.birthday.birthday.dayday=25;=25;3 3、结构体变量中的成员可以同一般变量一样进行运算、结构体变量中的成员可以同一般变量一样进行运算。student1.birthday.day+; student1.birthday.day+; stu

8、dent1.score+=60;student1.score+=60;第9页/共30页对局部变量类型的结构体变量初始化对局部变量类型的结构体变量初始化void main(void) struct student long int num; char name20; char sex; char addr30; student1=901031, “Li Lin”, M, “123 Beijing Road”; printf(“%dn”,);输出:输出: LiLin对变量初始化,一一赋值对变量初始化,一一赋值第10页/共30页关于结构类型变量的使用,说明以下几点关于结构类

9、型变量的使用,说明以下几点: :1 1、同类型的结构体变量之间可以直接赋值、同类型的结构体变量之间可以直接赋值。这种赋值等同于各个成员的依次赋值。这种赋值等同于各个成员的依次赋值。 2 2、结构体变量不能直接进行输入输出,它、结构体变量不能直接进行输入输出,它的每一个的每一个成员成员能否直接进行输入输出,取决能否直接进行输入输出,取决于其成员的类型,若是基本类型或是字符数于其成员的类型,若是基本类型或是字符数组,则可以直接输入输出。组,则可以直接输入输出。3 3、结构体变量可以作为函数的参数,函数、结构体变量可以作为函数的参数,函数也可以返回结构体的值。当函数的形参与实也可以返回结构体的值。当

10、函数的形参与实参为结构体类型的变量时,这种结合方式属参为结构体类型的变量时,这种结合方式属于值调用方式,即属于值传递。于值调用方式,即属于值传递。第11页/共30页结构体数组结构体数组结构体数组中的结构体数组中的每个元素都是一个结构体类型每个元素都是一个结构体类型的变量的变量,其中包括该类型的各个成员。数组各,其中包括该类型的各个成员。数组各元素在内存中连续存放。元素在内存中连续存放。第12页/共30页一、结构体数组的定义一、结构体数组的定义struct student int num; char name20; char sex; int age; float score; char add

11、r30; ;struct student stu30;struct student int num; char name20; char sex; int age; float score; char addr30; stu30;直接定义直接定义第13页/共30页二、结构体数组的初始化二、结构体数组的初始化struct student int num; char name20; char sex; stu3= 1011, Li Lin,M, 1012,Wang Lan,F, 1013,Liu Fang,F;第14页/共30页struct student int num; char name20

12、; char sex; stu = 1011,Li Lin,M, 1012,Wang Lan,F, 1013,Liu Fang,F;第15页/共30页以下程序的结果是:以下程序的结果是:void main(void) struct date int year, month, day; today; printf(“%dn”,sizeof(struct date); 12第16页/共30页根据下面的定义,能打印出字母根据下面的定义,能打印出字母M的语句是:的语句是:struct person char name9; int age; ;struct person _class10= “Jone”

13、,17, “Paul”,19, “Mary”,18, “Adam”,16 ;A) printf(“%dn”,_);B) printf(“%dn”,_1 );C) printf(%dn”,_1 );D) printf(“%dn”,_0);输出:输出:Adam输出:输出:d输出:输出:a输出:输出:M第17页/共30页第18页/共30页例:使例:使用指向结构型变量用指向结构型变量的指针变量给给结构型变的指针变量给给结构型变量的成员赋值,然后输出量的成员赋值,然后输出。void main() strcut stu

14、dent2 x,*p=&x; p-num=100001l; strcpy( (*p).name,”zhao”); printf(“num=%ldn”,(*p).num); printf(“name=%sn”,p-name);#includestruct student2 long num; char name10;第19页/共30页下列程序段是正确的下列程序段是正确的:Struct exp1 int i1; float f2; struct exp1 *e1;下下列程序段是错误的列程序段是错误的:Struct exp2 int i1; float f2; struct exp2,e2;第20页

15、/共30页第21页/共30页第22页/共30页void main() student2 s2,*p;/结构型数组结构型数组s2,指针,指针p p=s;/p指向指向s p-num=100001l; /利用指针为利用指针为s0的成员赋的成员赋值值 strcpy(*p).name,”sun3”); (*(p+1).num=200001l;/为为s1的成员赋值的成员赋值 strcpy(p+1)-name,”sun4”); printf(“%ld,%sn”,(*p).num,p-name); printf(“%ld,%sn”,(p+1)-num,(*(p+1).name);第23页/共30页第24页/共

16、30页void my_in(student *stu) for(int i=0;iN;i+) scanf(%ld,&stui.num); scanf(%s,); scanf(%d,&stui.age); void main() int i; student ssN; my_in(ss); for(i=0;iN;i+) printf(%7ld%10s%4dn, ssi.num,,ssi.age);结构型指结构型指针作形参针作形参指针名作指针名作数组名用数组名用结构数组结构数组名作实参名作实参第25页/共30页【例例】编函数输入一个学生的信息,在主函数中调用编函数

17、输入一个学生的信息,在主函数中调用上述函数输入上述函数输入10个学生信息。个学生信息。使用全局变量。使用全局变量。#define N 10struct student long num; char name10; int age;sN;struct student my_in() struct student s; scanf(“%ld”,&s.num; scanf(“%s”,); scanf(“%d”,&s.age);void main() int I; for(i=0;iN;i+) si=my_in(); for(i=0;iN;i+) printf(“%ld %s %d” ,s

18、i.num,, si.age);第26页/共30页【例例】使用返回值传递结构数据。使用返回值传递结构数据。#define N 10struct student long num; char name10; int age;struct student my_in() struct student s; scanf(“%ld”,&s.num; scanf(“%s”,); scanf(“%d”,&s.age); return (s);void main() int I; struct student sN; for(i=0;iN;i+) si=my_in(); for(i=0;iN;i+) printf(“%ld %s %d” ,si.num,, si.age);第

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论