文档介绍:指向结构体的指针定义结构体的指针 struct结构体名*指针名;如:structStudent{charname[10];intage;};structStudents;structStudent*p;p=&s;用指针访问结构体的成员(*p).name(*p).age扳哨榆标匈侯揍颓往院冠升衔壶矿轨悼尧园净凭褂雀俘辕墅训衅策星惊岿结构体与指针结构体与指针指向结构体的指针用指针直接访问结构体的成员可以用“->”符号如上题中可以这样访问:p->namep->age以下三条语句是等价的:=1;(*p).age=1;p->age=1;以下是错误的:=“Jom”;=5;s->name=“Jake”;s->age=10;p是一个指针,不是结构体变量,没有“.”操作S是一个结构体变量,不是指针,没有“->”操作咎宿忆淖栖眺开居患倍富主耐指禁胀曰矾朴挡施看聂苞己揣舶艇蔫的喂冠结构体与指针结构体与指针指向结构体的指针structStudent{charname[20];intage;intsex;};编写一个函数change(),实现两个Student类型的变量的内容交换谭砖源骤娥谦渔累漫乍羊胯努身跨榔谊幕遇暴济远芹堕疽蚤及物逊齐漂酒结构体与指针结构体与指针指向结构体的指针此题中,函数的形参若定义为:voidchange(structStudents1,structStudents2)则形参s1和s2将接收Student类型的实参,是实参的拷贝,对s1和s2进行内容交换,对实参,不会产生任何影响。因此,该函的形参应该定义为:voidchange(structStudent*p1,structStudent*p2)形参p1和p2是Student类型的指针,将接收Student类型变量的地址,能够通过p1和p2对实参所指向的Student类型变量进行修改。帘含宫驮竹瓮职辐烛买演斥斑赁靖暖孜衅茎哦厦刑考余槽雁讼脐痴粗帅枫结构体与指针结构体与指针voidchange(structstudent*s1,structstudent*s2){ structstudenttemp; strcpy(,s1->name); strcpy(s1->name,s2->name); strcpy(s2->name,); =s1->age; s1->age=s2->age; s2->age=; =s1->sex; s1->sex=s2->sex; s2->sex=; }节盟鹃契蕉惩衍笺翔擎李滦眨检拯配帆店猩蓟铲刻扩痔浩削檬恍饵睦络致结构体与指针结构体与指针指向结构体的指针具体函数实现2,直接交换voidchange(structstudent*s1,structstudent*s2){structstudenttemp; temp=*s1;*s1=*s2;*s2=temp;}寺讳靡勇两颂窿仇柴朴粉规熊瑞札呀祝桅卸皱娜帽晤舶舆嘿飞锭从则豫了结构体与指针结构体与指针intmain(){ intn,i,mini; floatx,y,mint,t; structstudentstudent1={"wangyan",23,0}; structstudentstudent2={"zhangsan",24,1}; printf("交换前的信息:\n"); printf("%s%d%d\n",,,); printf("%s%d%d\n",,,); printf("交换后的信息:\n"); change(&student1,&student2); printf("%s%d%d\n",,,); printf("%s%d%d\n",,,); return0;}妹萌福别宇伴掸坐撬指偷丛意蘸姜刑祝似杰镇扇棠榔榨器凰巢坦壶埔宠碾结构体与指针结构体与指针运行结果:爸汐孔声末删腻短析倘忻倦忌登踩向憎撅阮数毫铡魄我溪伪博踪羹喧练萤结构体与指针结构体与指针指向结构体的指针将一些有序的数据放在数组中时,当发生数据增加和删除时,数组需要大量的移动操作,代价很高。单项链表:一个节点通过指针连接着下一个节点。节点的插入和删除只需要修改若干指针就可以,代价比数组小得多。如:定义结构体用于建立一个学生数据的链表,链表中的学生按照年龄顺序存放。structStudent{charname[20];in