如何进行C语言结构体的定义和使用
发表于:2025-02-09 作者:千家信息网编辑
千家信息网最后更新 2025年02月09日,本篇文章为大家展示了如何进行C语言结构体的定义和使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1.1: 结构体用来干嘛?生活中我们会遇到很多的表格,就比如
千家信息网最后更新 2025年02月09日如何进行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安全错误
数据库的锁怎样保障安全
驱动软件开发能干到老吗
敏捷软件开发有哪几种
三丰云服务器python
手机软件开发需要学
胶南数据库恢复
宜兴微型软件开发产业化
克拉玛依网络技术预算
软件开发项目实施保障措施
湖南网络安全技术有限公司
电脑打开数据库连接失败
计算机网络技术是一个什么专业
如何查自己电脑dns服务器呢
自贡银行软件开发岗怎么样
北京pdu服务器专用电源报价
指数函数课件软件开发
简历数据库系统
网信办网络安全ppt
服务器光模块
江苏网络安全工程职称
长宁区网络营销软件开发咨询热线
传奇霸主服务器下载
代理服务器共享连接
大学网络安全班会结尾
软件开发收入怎么算成本
软件开发与制作专业对口
小型软件开发教程
excel迁移数据库
广州纵横网络技术
云服务器找回删除信息
为什么一进联盟就无法连接服务器