千家信息网

C语言结构体数组怎么定义和使用

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要讲解了"C语言结构体数组怎么定义和使用",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C语言结构体数组怎么定义和使用"吧!介绍一个结构体变量
千家信息网最后更新 2026年11月02日C语言结构体数组怎么定义和使用

这篇文章主要讲解了"C语言结构体数组怎么定义和使用",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C语言结构体数组怎么定义和使用"吧!

介绍

一个结构体变量可以存放一个学生的一组信息,可是如果有 10 个学生呢?难道要定义 10 个结构体变量吗?难道上面的程序要复制和粘贴 10 次吗?

很明显不可能,这时就要使用数组。结构体中也有数组,称为结构体数组。它与前面讲的数值型数组几乎是一模一样的,只不过需要注意的是,结构体数组的每一个元素都是一个结构体类型的变量,都包含结构体中所有的成员项。

定义结构体数组的方法很简单,同定义结构体变量是一样的,只不过将变量改成数组。或者说同前面介绍的普通数组的定义是一模一样的,如:

struct STUDENT stu[10];

这就定义了一个结构体数组,共有 10 个元素,每个元素都是一个结构体变量,都包含所有的结构体成员。

结构体数组的引用与引用一个结构体变量在原理上是一样的。只不过结构体数组中有多个结构体变量,我们只需利用 for 循 环一个一个地使用结构体数组中的元素。

下面编写一个程序,编程要求:从键盘输入 5 个学生的基本信息,如姓名、年龄、性别、学号,然后将学号最大的学生的基本信息输出到屏幕。

# include # include struct STU{    char name[20];    int age;    char sex;    char num[20];};void OutputSTU(struct STU stu[5]);  //函数声明, 该函数的功能是输出学号最大的学生信息int main(void){    int i;    struct STU stu[5];    for (i=0; i<5; ++i)    {        printf("请输入第%d个学生的信息:", i+1);        scanf ("%s%d %c%s", stu[i].name, &stu[i].age, &stu[i].sex, stu[i].num);/*%c前面要加空格, 不然输入时会将空格赋给%c*/    }    OutputSTU(stu);    return 0;}void OutputSTU(struct STU stu[5]){    struct STU stumax = stu[0];    int j;    for (j=1; j<5; ++j)    {        if (strcmp(stumax.num, stu[j].num) < 0)  //strcmp函数的使用        {            stumax = stu[j];        }    }    printf("学生姓名:%s 学生年龄:%d 学生性别:%c 学生学号:%s\n", stumax.name, stumax.age, stumax.sex, stumax.num);}

输出结果是:

请输入第1个学生的信息:小红 22 F Z1207031

请输入第2个学生的信息:小明 21 M Z1207035

请输入第3个学生的信息:小七 23 F Z1207022

请输入第4个学生的信息:小欣 20 F Z1207015

请输入第5个学生的信息:小天 19 M Z1207024

学生姓名:小明 学生年龄:21 学生性别:M 学生学号:Z1207035

结构体数组定义时初始化

结构体数组的初始化与前面讲的数值型数组的初始化是一模一样的,数值型数组初始化的方法和需要注意的问题在结构体数组的初始化中同样适用,因为不管是数值型数组还是结构体数组都是数组。下面就将前面的一个程序修改一下。

# include # include struct STU{    char name[20];    int age;    char sex;    char num[20];};void OutputSTU(struct STU stu[5]);  //函数声明int main(void){    struct STU stu[5] = {{"小红", 22, 'F', "Z1207031"}, {"小明", 21, 'M', "Z1207035"}, {"小七", 23, 'F', "Z1207022"}, {"小欣", 20, 'F', "Z1207015"}, {"小天", 19, 'M', "Z1207024"}};    OutputSTU(stu);    return 0;}void OutputSTU(struct STU stu[5]){    struct STU stumax = stu[0];    int j;    for (j=1; j<5; ++j)    {        if (strcmp(stumax.num, stu[j].num) < 0)        {            stumax = stu[j];        }    }    printf("学生姓名:%s 学生年龄:%d 学生性别:%c 学生学号:%s\n", stumax.name, stumax.age, stumax.sex, stumax.num);}

输出结果是:

学生姓名:小明 学生年龄:21 学生性别:M 学生学号:Z1207035

注意,字符要用单引号括起来,字符串要用双引号括起来。

补充

C语言结构体数组示例演示

【示例】计算全班学生的总成绩、平均成绩和以及 140 分以下的人数。

#include struct{    char *name;  //姓名    int num;  //学号    int age;  //年龄    char group;  //所在小组    float score;  //成绩}class[] = {    {"Li ping", 5, 18, 'C', 145.0},    {"Zhang ping", 4, 19, 'A', 130.5},    {"He fang", 1, 18, 'A', 148.5},    {"Cheng ling", 2, 17, 'F', 139.0},    {"Wang ming", 3, 17, 'B', 144.5}};int main(){    int i, num_140 = 0;    float sum = 0;    for(i=0; i<5; i++){        sum += class[i].score;        if(class[i].score < 140) num_140++;    }    printf("sum=%.2f\naverage=%.2f\nnum_140=%d\n", sum, sum/5, num_140);    return 0;}

运行结果:

sum=707.50

average=141.50

num_140=2

感谢各位的阅读,以上就是"C语言结构体数组怎么定义和使用"的内容了,经过本文的学习后,相信大家对C语言结构体数组怎么定义和使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

学生 结构 数组 信息 变量 学号 输入 姓名 年龄 语言 性别 元素 函数 数值 小明 输出 一模一样 只不过 程序 结果 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网扶贫科技 互联网与新科技 天津摩尔互联网科技 互联网科技美容 互联网科技宣传片 互联网科技公司名称 人人互联网科技是培训 贵州叶脉互联网科技有限公司所属行业 智腾互联网科技有限公司 厦门千工互联网科技有限公司 互联网科技革命什么开始 链环科技传统企业怎么转型互联网 996高科技互联网公司 佛山市翊博互联网络科技有限公司 西安小鹰速贷互联网科技有限公司 广州燕处互联网科技有限公司 互联网科技的前景 北京品多多互联网科技有限公司 广东猫王互联网科技有限公司电话 广州全民伙伴互联网科技有限公司 互联网通讯科技 港股互联网科技股 麻工互联网科技 上海喔噻互联网科技 互联网科技宣传片 青岛中康互联网医疗科技有限公司 昊天互联网科技有限公司 湖北辰鑫科技互联网 深圳互联网科技园地址 北京瑞云互联网科技有限公司
0