指向结构体的指针定义结构体的指针 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
结构体与指针 来自淘豆网www.taodocs.com转载请标明出处.