欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 焦点 > 使用结构体数组和结构体指针

使用结构体数组和结构体指针

2024/12/25 9:56:31 来源:https://blog.csdn.net/qq_29385297/article/details/144325567  浏览:    关键词:使用结构体数组和结构体指针

结构体数组是一种用于存储一组具有相同类型结构体的数据结构。

结构体数组的定义和使用

定义结构体数组一般形式是

struct Person{char name[20];int count;
}leader[5];

先声明一个结构体类型,然后再用此类型定义结构体数组

struct Person{char name[20];int count;
};void main(){struct Person leader[5];
}

结构体数组初始化

struct Person leader[3]={{"zhangsan",1},{"lisi",2},{"wangwu",3}};

【例9.4】有n个学生的信息(包括学号、姓名、成绩),要求按照成绩的高低顺序输出各学生的信息。

#include<stdio.h>
/*【例9.4】有n个学生的信息(包括学号、姓名、成绩),
要求按照成绩的高低顺序输出各学生的信息。*/
struct Student{int number;char name[20];float score;
};void main(){struct Student stus[5]={{1001,"zhangsan",78},{1001,"lisi",56},{1001,"wangwu",69},{1001,"zhaoliu",95},{1001,"tianqi",88}};int i,j,n=5,k;struct Student temp;for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++){if(stus[j].score > stus[k].score ){k=j;}}if(k!=i){temp = stus[i];stus[i] = stus[k];stus[k] = temp;}}for(i=0;i<n;i++){printf("%d %s %.1f\n",stus[i].number,stus[i].name,stus[i].score);}}

结构体指针的定义和使用

所谓结构体指针就是指向结构体变量的指针,一个结构体变量的起始地址就是这个结构体变量的指针。如果把一个结构体变量的起始地址存放在一个指针变量中,那么,这个指针变量就指向该结构体变量。

【例9.5】通过指向结构体变量的指针变量输出结构体变量中成员的信息。

#include<stdio.h>
#include<string.h>
struct Student{int number;char name[20];float score;
};void main(){struct Student stu={1,"zhangsan",50.0f};struct Student *p = &stu;(*p).number = 2;strcpy((*p).name,"lisi");(*p).score = 60.0f;printf("%d %s %.1f\n",stu.number,stu.name,stu.score);printf("%d %s %.1f\n",(*p).number,(*p).name,(*p).score);printf("%d %s %.1f\n",p->number,p->name,p->score);
}

【例9.6】有3个学生的信息,放在结构体数组中,要求输出全部学生的信息。

#include<stdio.h>
#include<string.h>
struct Student{int number;char name[20];int age;
};void main(){struct Student stus[]={{1,"zhangsan",20},{2,"lisi",19},{3,"wangwu",18}};struct Student *p = stus;printf("No Name age\n");for(p=stus;p<stus+3;p++){printf("%d %s %d\n",p->number,p->name,p->age);}
}

用结构体变量和结构体变量的指针作函数参数

将一个结构体变量的值传递给另一个函数,有3个方法:

  1. 用结构体变量的成员作实参。值传递
  2. 用结构体变量作实参。 值传递
  3. 用指向结构体变量(或数组元素)的指针作实参,将结构体变量(或数组元素)的地址传给形参。 地址传递

值传递不能影响主调函数的变量。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com