如何进行C语言结构体的定义和使用
发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,本篇文章为大家展示了如何进行C语言结构体的定义和使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1.1: 结构体用来干嘛?生活中我们会遇到很多的表格,就比如
千家信息网最后更新 2026年11月04日如何进行C语言结构体的定义和使用
本篇文章为大家展示了如何进行C语言结构体的定义和使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
1.1: 结构体用来干嘛?
生活中我们会遇到很多的表格,就比如你的学习成绩表,有姓名 ,学号,各科的成绩,总的成绩等等,这是一些不同的数据类型,我们要是在c语言中想同时使用这些不同的数据怎么办呢? 可以使用结构体变量,结构体变量在c语言中是一种构造类型的数据,顾名思义,它跟基本的如int这种原子类型的变量不同.可以把他看作这些基本变量的集合.
1.2:结构体变量的基本定义格式
struct 结构体名{ <基本类型名> <成员变量名>; <基本类型名> <成员变量名>; <基本类型名> <成员变量名>;};注意:struct 是关键字是结构体类型的说明标识符,不能省略,结构体名可以省略,我们在使用 typedef struct 时就省略了就不写结构体名
1.3:结构体变量的定义
(我们也可以在创建结构体的时候声明变量这里不再赘述,提一下我对结构体变量的理解:首先结构体就是一个各种基本数据类型的集合,而就结构体变量就像我们定义一个集合s={1,2,3,4},s就相当于一个结构体变量,结构体变量包含结构体中的各个成员变量,我们可以对成员变量进行引用,操作....)
struct 结构体名 a, b; //定义了两个结构体变量strcut 结构体名 S[4]; //定义一个结构体变量数组,有四个元素strcut 结构体名* p = &a; //定义一个结构体指针,指向结构体变量a
1.4结构体变量的三种引用方法
结构体变量.成员名(*结构体指针).成员名结构体指针->成员名 //使用指针的时候推荐使用这一种,因为在数据结构中,很多这种引用方式
2.结构体变量的使用(直接使用结构体变量)
#include/*结构体的使用*/int main(){ struct job_exam //定义一个job_exam的结构体 { unsigned num; //学号 char name[10]; //姓名 char gread_class[10]; //班级 int EngLish; //英语成绩 int Chinese; //语文成绩 int Match; //数学成绩 int Sum_Exam; //总成绩 }; struct job_exam Most_Exam_Student; //结构体变量用来存放成绩最高的同学的信息 struct job_exam SomeStudent_news[4] = { {1901,"陇军","3-2班",100,100,78},{1902,"李华","3-2班",99,99,88}, {1903,"李明","3-2班",99,98,90},{1903,"李光","3-2班",99,98,80}}; //结构体数组用来输入4名同学的信息 for (int i = 0; i < 4; i++) //依次计算每一位同学的总成绩 { SomeStudent_news[i].Sum_Exam = SomeStudent_news[i].EngLish + SomeStudent_news[i].Chinese + SomeStudent_news[i].Match; } Most_Exam_Student = SomeStudent_news[0]; //假使第一个学生的成绩最高 if (Most_Exam_Student.Sum_Exam < SomeStudent_news[1].Sum_Exam) { Most_Exam_Student = SomeStudent_news[1]; } else if (Most_Exam_Student.Sum_Exam < SomeStudent_news[2].Sum_Exam) { Most_Exam_Student = SomeStudent_news[2]; } else { Most_Exam_Student = SomeStudent_news[3]; } printf("总成绩最高学生的信息为:\n"); printf(" 编号 姓名 班级 英语 语文 数学 总成绩\n"); printf("%6u %7s %7s %6d %6d %6d %6d",Most_Exam_Student.num,Most_Exam_Student.name,Most_Exam_Student.gread_class,Most_Exam_Student.EngLish,Most_Exam_Student.Chinese,Most_Exam_Student.Match,Most_Exam_Student.Sum_Exam);}
2.1输出结果

当用结构体变量作为函数参数进行整体传送时,要将全部成员逐个进行传送,当成员中有数组时,会使传送的时间和空间开销都很大严重降低程序的效率,所以我们一般在使用时不直接传送结构体变量,而是传送结构体变量的地址,减少时间课空间的开销
3.使用结构体指针操作,返回总成绩最低的学生信息
#include/*结构体的使用*/int Find_Sumexam(struct job_exam* pa); //函数声明struct job_exam //定义一个全局job_exam的结构体{ unsigned num; //学号 char name[10]; //姓名 char gread_class[10]; //班级 int EngLish; //英语成绩 int Chinese; //语文成绩 int Match; //数学成绩 int Sum_Exam; //总成绩};struct job_exam SomeStudent_news[4] = { {1901,"陇军","3-2班",100,100,78},{1902,"李华","3-2班",99,99,88}, //结构体数组用来输入4名同学的信息 {1903,"李明","3-2班",99,98,90},{1903,"李光","3-2班",99,98,80} };int main(){ struct job_exam Most_Exam_Student; //结构体变量用来存放成绩最高的同学的信息 for (int i = 0; i < 4; i++) //依次计算每一位同学的总成绩 { SomeStudent_news[i].Sum_Exam = SomeStudent_news[i].EngLish + SomeStudent_news[i].Chinese + SomeStudent_news[i].Match; } Find_Sumexam(&Most_Exam_Student); //函数调用 printf("总成绩最低学生的信息为:\n"); printf(" 编号 姓名 班级 英语 语文 数学 总成绩\n"); printf("%6u %7s %7s %6d %6d %6d %6d",Most_Exam_Student.num,Most_Exam_Student.name,Most_Exam_Student.gread_class,Most_Exam_Student.EngLish,Most_Exam_Student.Chinese,Most_Exam_Student.Match,Most_Exam_Student.Sum_Exam);}int Find_Sumexam(struct job_exam* pa) //定义一个返回最高学生信息的函数{ *pa = SomeStudent_news[0]; //假使第一个学生的总成绩最高 for (int i = 1; i < 4; i++) { if (pa->Sum_Exam > SomeStudent_news[i].Sum_Exam) { *pa = SomeStudent_news[i]; //这样的化只需要找到最高一个学生的地址返回他的信息就可以了 } } return 0;}
3.1运行结果

上述内容就是如何进行C语言结构体的定义和使用,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。
结构
变量
成绩
总成
总成绩
信息
最高
学生
同学
成员
姓名
指针
数据
类型
语言
函数
数学
数组
班级
语文
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
保险科技 互联网保险
互联网科技公司经营范围
互联网科技工作委员会
中关村互联网 科技集团
中国互联网科技工作委员会毛军
易通互联网络科技有限公司
深圳天众互联网科技公司
互联网科技logo
苏州大垚互联网科技
互联网科技创新企业排名
互联网巨头投资的硬核科技
中国最先进互联网科技公司
重庆威客帮互联网科技
宁夏众和广鑫互联网科技有限公司
厦门比较好的科技互联网公司
世界互联网科技公司市值排名
银川新华互联网科技学校联系电话
乌鲁木齐新华智原互联网科技学校
科技互联网海报
江苏苏星互联网科技有限公司
百单网互联网科技有限公司怎么样
为想互联网科技
融势互联网科技
衡水科技产业互联网平台
互联网公司黑科技创始人
互联网科技创新的路径
互联网科技圈年度人物
城市宝互联网科技有限公司
中国新注册互联网科技
平安好医生打造互联网科技医疗