1 / 22
文档名称:

结构体与指针.ppt

格式:ppt   大小:108KB   页数:22页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

结构体与指针.ppt

上传人:zbfc1172 2019/12/27 文件大小:108 KB

下载得到文件列表

结构体与指针.ppt

文档介绍

文档介绍:指向结构体的指针定义结构体的指针 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