预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共44页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

11.1概述结构体是一种构造数据类型用途:把不同类型的数据组合成一个整体--自定义数据类型结构体类型声明例structstudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];};例structstudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];};structstudentstu1,stu2;声明结构体类型的同时定义结构体变量一般形式:直接定义结构体变量一般形式:例structdate{intmonth;intday;intyear;};structstudent{intnum;charname[20];structdatebirthday;}stu;11.3结构体变量的引用引用规则结构体变量不能整体引用,只能引用变量成员11.4结构体变量的初始化形式一:形式二:形式三:11.5结构体数组11.5.1定义结构体数组三种形式:顺序初始化:structstudent{intnum;charname[20];charsex;intage;};structstudentstu[]={100,“WangLin”,‘M’,20,101,“LiGang”,‘M’,19,110,“LiuYan”,‘F’,19};例对侯选人选票的统计程序/*c10_1.c*/structstudentstu1;structstudent*p=&stu1;=101;(*p).num=101charsex;构造数据类型,也叫联合体a=1;()}stu1,stu2;例structstudentintage;charname[20];charposition[10];{printf("parm.在链表中设置头结点有什么好处?长度=最长成员所占字节数}stu_1,*p;函数原型:void*malloc(unsignedintsize);charname[20];floatscore;用结构体变量作参数----多值传递,效率低11.6.3用结构体变量和指向结构体的指针作函数参数用结构体变量的成员作参数---值传递用指向结构体变量或数组的指针作参数---地址传递用结构体变量作参数----多值传递,效率低#include<stdio.h>/*c10_4.c*/structdata{inta,b,c;};main(){voidfunc(structdata);structdataarg;arg.a=27;arg.b=3;arg.c=arg.a+arg.b;printf("arg.a=%darg.b=%darg.c=%d\n",arg.a,arg.b,arg.c);printf("CallFunc()....\n");func(arg);printf("arg.a=%darg.b=%darg.c=%d\n",arg.a,arg.b,arg.c);}voidfunc(structdataparm){printf("parm.a=%dparm.b=%dparm.c=%d\n",parm.a,parm.b,parm.c);printf("Process...\n");parm.a=18;parm.b=5;parm.c=parm.a*parm.b;printf("parm.a=%dparm.b=%dparm.c=%d\n",parm.a,parm.b,parm.c);printf("Return...\n");}#include<stdio.h>/*c10_5.c*/structdata{inta,b,c;};main(){voidfunc(structdata*parm);structdataarg;arg.a=27;arg.b=3;arg.c=arg.a+arg.b;printf("arg.a=%darg.b=%darg.c=%d\n",arg.a,arg.b,arg.c);printf("CallFunc()....\n");func(&arg);printf("arg.a=%darg.b=%darg.c=%d\n",arg.a,arg.b,arg.c);}voidfunc(structdata*parm){printf("parm->a=%dparm->b=%dparm->c=%d\n",parm->a,parm->b,parm->c);printf("Process...\n");parm->a=18;parm->b=5;parm->c=parm->a*parm->b;printf("parm->a=%dparm->b=%dparm->c=%d\n",parm->a,parm->b,parm->c);printf("