资源描述:
《结构体与链表ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、结构体与链表结构体和指针指向结构体变量的指针定义形式:struct结构体名*结构体指针名;例structstudent*p;存放结构体变量在内存的起始地址numnamesexagestupstructstudent{intnum;charname[20];charsex;intage;}stu;structstudent*p=&stu;使用结构体指针变量引用成员形式例intn;int*p=&n;*p=10;n=10structstudentstu1;structstudent*p=&stu1;stu1.num=101;(*p).n
2、um=101(*结构体指针名).成员名结构体指针名->成员名结构体变量名.成员名表示指向的运算符优先级:1结合方向:从左向右三种基本形式:结构体变量.成员名(*p).成员名p->成员名main(){structstudent{longintnum;charname[20];charsex;floatscore;}stu_1,*p;p=&stu_1;stu_1.num=89101;strcpy(stu_1.name,"LiLin");p->sex='M';p->score=89.5;printf("No:%ldname:%s
3、sex:%cscore:%f",(*p).num,p->name,stu_1.sex,p->score);}例子结构体变量作为函数参数用结构体变量的成员作实在参数----值传递用指向结构体变量或数组的指针作参数----地址传递用结构体变量作参数----多值传递,效率低用结构体变量作函数参数voidfunc(structdata);structdata{inta,b,c;};main(){structdataarg;arg.a=27;arg.b=3;arg.c=arg.a+arg.b;printf("arg.a=%darg.b=
4、%darg.c=%d",arg.a,arg.b,arg.c);printf("CallFunc()....");func(arg);printf("arg.a=%darg.b=%darg.c=%d",arg.a,arg.b,arg.c);}voidfunc(structdataparm){printf("parm.a=%dparm.b=%dparm.c=%d",parm.a,parm.b,parm.c);printf("Process...");parm.a=18;parm.b=5;parm.c=parm.a*pa
5、rm.b;printf("parm.a=%dparm.b=%dparm.c=%d",parm.a,parm.b,parm.c);printf("Return...");}arga:27b:3c:30(main)arga:27b:3c:30(main)(func)parma:18b:5c:90arga:27b:3c:30(main)arga:27b:3c:30(main)(func)parma:27b:3c:30用结构体指针变量作函数参数structdata{inta,b,c;};main(){voidfunc(structda
6、ta*parm);structdataarg;arg.a=27;arg.b=3;arg.c=arg.a+arg.b;printf("arg.a=%darg.b=%darg.c=%d",arg.a,arg.b,arg.c);printf("CallFunc()....");func(&arg);printf("arg.a=%darg.b=%darg.c=%d",arg.a,arg.b,arg.c);}voidfunc(structdata*parm){printf("parm->a=%dparm->b=%dparm->c=%
7、d",parm->a,parm->b,parm->c);printf("Process...");parm->a=18;parm->b=5;parm->c=parm->a*parm->b;printf("parm->a=%dparm->b=%dparm->c=%d",parm->a,parm->b,parm->c);printf("Return...");}arga:18b:5c:90(main)(func)parm****arga:27b:3c:30(main)(func)parm****arga:27b:3c:30
8、(main)arga:18b:5c:90(main)链表—指针与结构的综合链表是程序设计中一种重要的动态数据结构,动态性体现为:链表中的元素个数可以根据需要增加和减少,不像数组,在声明之后就固定不变;元素的位置可以变化,