下载此文档

结构体与指针.ppt


文档分类:IT计算机 | 页数:约22页 举报非法文档有奖
1/22
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/22 下载此文档
文档列表 文档介绍
指向结构体的指针?定义结构体的指针?struct 结构体名*指针名;?如:?struct Student?{? char name[10];? int age;?};?struct Student s;?struct Student *p;?p=&s;用指针访问结构体的成员 (*p).name (*p).age指向结构体的指针?用指针直接访问结构体的成员可以用“->”符号?如上题中可以这样访问:?p->name?p->age?以下三条语句是等价的:?=1; (*p).age=1; p->age=1;?以下是错误的:?=“Jom”; =5;?s->name=“Jake”; s->age=10;?p是一个指针,不是结构体变量,没有“.”操作?S是一个结构体变量,不是指针,没有“->”操作指向结构体的指针?struct Student?{? char name[20];? int age;? int sex;?};?编写一个函数change(),实现两个Student类型的变量的内容交换指向结构体的指针?此题中,函数的形参若定义为:?void change(struct Student s1, struct Student s2)?则形参s1和s2将接收Student类型的实参,是实参的拷贝,对s1和s2进行内容交换,对实参,不会产生任何影响。?因此,该函的形参应该定义为:?void change(struct Student *p1, struct Student *p2)?形参p1和p2是Student类型的指针,将接收Student类型变量的地址,能够通过p1和p2对实参所指向的Student类型变量进行修改。?void change(struct student *s1,struct student *s2)?{struct student temp;?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,直接交换?void change(struct student *s1, struct student *s2)?{? struct student temp;? temp=*s1;?*s1=*s2;?*s2=temp;?}?int main()?{?int n,i,mini;?float x,y,mint,t;?struct student student1={"wangyan",23,0};?struct student student2={"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",,,);? return 0;?}运行结果:指向结构体的指针?将一些有序的数据放在数组中时,当发生数据增加和删除时,数组需要大量的移动操作,代价很高。?单项链表:?一个节点通过指针连接着下一个节点。节点的插入和删除只需要修改若干指针就可以,代价比数组小得多。?如:定义结构体用于建立一个学生数据的链表,链表中的学生按照年龄顺序存放。? struct Student?{? char name[20]; ? int age;? struct Student *next; //Student类型的指针,指向下一个学生? };指向结构体的指针Name:JomAge:20Next: Name:LilyAge:14Next: Name:RoseAge:10Next: Name:JakeAge:13Next: 建立链表的结构:

结构体与指针 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数22
  • 收藏数0 收藏
  • 顶次数0
  • 上传人drp539604
  • 文件大小0 KB
  • 时间2016-01-27