文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何进行C语言结构体的定义和使用

2023-06-22 06:49

关注

本篇文章为大家展示了如何进行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 <stdio.h>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输出结果

如何进行C语言结构体的定义和使用

当用结构体变量作为函数参数进行整体传送时,要将全部成员逐个进行传送,当成员中有数组时,会使传送的时间和空间开销都很大严重降低程序的效率,所以我们一般在使用时不直接传送结构体变量,而是传送结构体变量的地址,减少时间课空间的开销

3.使用结构体指针操作,返回总成绩最低的学生信息

#include <stdio.h>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语言结构体的定义和使用

上述内容就是如何进行C语言结构体的定义和使用,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯