iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >详解C语言结构体的定义和使用
  • 520
分享到

详解C语言结构体的定义和使用

2024-04-02 19:04:59 520人浏览 泡泡鱼
摘要

目录1.1:结构体用来干嘛?1.2:结构体变量的基本定义格式1.3:结构体变量的定义1.4结构体变量的三种引用方法2.结构体变量的使用(直接使用结构体变量)2.1输出结果3.

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输出结果

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

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运行结果

总结:

结构体没有什么神奇的就是,一个集合里面包含了各种数据类型,我们想用什么加个.就可以拿出来用,本质和基本的数据类型没有什么区别,欢迎大家来评论区指出有问题的地方

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容!

--结束END--

本文标题: 详解C语言结构体的定义和使用

本文链接: https://www.lsjlt.com/news/161094.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 详解C语言结构体的定义和使用
    目录1.1:结构体用来干嘛?1.2:结构体变量的基本定义格式1.3:结构体变量的定义1.4结构体变量的三种引用方法2.结构体变量的使用(直接使用结构体变量)2.1输出结果3....
    99+
    2024-04-02
  • C语言结构体数组的定义和使用详解
    目录介绍结构体数组定义时初始化补充介绍 一个结构体变量可以存放一个学生的一组信息,可是如果有 10 个学生呢?难道要定义 10 个结构体变量吗?难道上面的程序要复制和粘贴 10 次吗...
    99+
    2024-04-02
  • C语言之结构体定义typedef struct用法详解
    在C语言中,使用struct关键字可以定义一个结构体类型,用于存储不同类型的数据。为了方便使用,可以使用typedef关键字给结构体...
    99+
    2023-08-09
    C语言
  • C语言结构体数组怎么定义和使用
    这篇文章主要讲解了“C语言结构体数组怎么定义和使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言结构体数组怎么定义和使用”吧!介绍一个结构体变量可以存放一个学生的一组信息,可是如果有 ...
    99+
    2023-06-25
  • 如何进行C语言结构体的定义和使用
    本篇文章为大家展示了如何进行C语言结构体的定义和使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1.1: 结构体用来干嘛生活中我们会遇到很多的表格,就比如你的学习成绩表,有姓名 ,学号,各科的成绩...
    99+
    2023-06-22
  • 详解C语言中结构体的使用
    目录结构体的声明结构体成员的类型结构体成员的访问结构体的声明 结构体的定义:结构体是一些值的集合,这些值称为成员变量,结构体的每个成员可以是不同类型的变量。 举例: //定义结构体类...
    99+
    2024-04-02
  • c语言中怎么使用typedef定义结构体
    在C语言中,可以使用typedef关键字来定义结构体,使得结构体的类型名称更加简洁易用。以下是使用typedef定义结构体的一般形式...
    99+
    2023-08-15
    c语言 typedef
  • C语言中如何定义结构体
    本篇内容主要讲解“C语言中如何定义结构体”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言中如何定义结构体”吧!什么是结构体?在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚...
    99+
    2023-06-16
  • C语言自定义类型详解(结构体、枚举、联合体和位段)
    目录前言一、结构体1、结构体类型的声明2、结构体的自引用3、结构体变量的定义和初始化4、结构体内存对齐5、结构体传参二、位段1、位段的定义 2、位段的内存分配3、位段的应用...
    99+
    2024-04-02
  • C语言结构体struct详解
    目录结构体的概念结构体类型的声明结构体变量的创建typedef关键字结构体的嵌套结构体变量的初始化结构体成员的访问结构体的传参总结结构体的概念 结构体是由一系列具有相同类型或不同类型...
    99+
    2024-04-02
  • 详解C语言结构体,枚举,联合体的使用
    目录一、匿名结构体二、结构体的自引用1、声明时不要自己引用自己2、结构体重命名时不能使用重命名三、结构体内存对齐规则1、结构体内存计算2、结构体嵌套3、通过调整结构体成员顺序,压缩内...
    99+
    2024-04-02
  • C语言自定义数据类型的结构体、枚举和联合详解
    结构体基础知识 首先结构体的出现是因为我们使用C语言的基本类型无法满足我们的需求,比如我们要描述一本书,就需要书名,作者,价格,出版社等等一系列的属性,无疑C语言的基本数据类型无法解...
    99+
    2024-04-02
  • C语言之结构体(struct)详解
    目录为什么需要引入结构体struct定义typedef与#define结构体变量初始化及成员访问结构体访问总结为什么需要引入结构体 原有的数据类型不能满足需求,因此才设计了构造类型结...
    99+
    2024-04-02
  • c语言如何自定义结构体类型
    在C语言中,可以使用`typedef`关键字来自定义结构体类型。`typedef`关键字用于为已存在的类型定义一个新的名称。以下是定...
    99+
    2023-09-04
    c语言
  • C语言中的自定义类型之结构体与枚举和联合详解
    目录1.结构体1.1结构的基础知识1.2结构的声明1.3特殊的声明1.4结构的自引用1.5结构体变量的定义和初始化1.6结构体内存对齐1.7修改默认对齐数1.8结构体传参2.位段2....
    99+
    2024-04-02
  • 怎么在C语言中自定义结构体和枚举
    这篇文章将为大家详细讲解有关怎么在C语言中自定义结构体和枚举,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。C语言是什么C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发,使...
    99+
    2023-06-14
  • C语言结构体指针引用详解
    目录指向结构体变量的指针指向结构体数组的指针结构体指针,可细分为指向结构体变量的指针和指向结构体数组的指针。 指向结构体变量的指针 前面我们通过“结构体变量名.成员名”的方式引用结构...
    99+
    2024-04-02
  • C语言 structural body结构体详解用法
    目录结构体结构体类型的声明举个现实例子程序实例结构体成员的类型:结构体变量的定义和初始化程序一结构体嵌套情况下,初始化和定义结构体成员的访问结构体传参程序一:程序二结构体 结构是一些...
    99+
    2024-04-02
  • C语言超详细讲解结构体与联合体的使用
    目录结构体offsetof-宏位段枚举联合体(共用体)结构体 结构体内存对齐问题: 当我们在计算结构体的大小时,我们便需要清楚的知道结构体内存对齐是什么。 存在内存对齐的原因可细分为...
    99+
    2024-04-02
  • C语言结构体(struct)的详细讲解
    目录引言1. 动态内存管理2. 结构体2.1 定义语法2.2 定义示例2.3 初始化2.4 结构体赋值2.5 结构体数组2.6 结构体指针赋值3. 学生管理系统附:结构体变量的存储原...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作