当前位置: 首页 > news >正文

C语言结构体详细讲解

文章目录

一、前言

   在学习结构体之前,讲讲为什么会专门写一章博客来分享这个知识点;首先在写C语言蓝桥杯的一些题目的时候,很多地方都会用到结构体,后台粉丝私信我说,出一期这个结构体的内容。于是,在当完牛马过后的我为了不让大家知识点有遗漏或者做题看不懂,加班加点的写了一篇关于结构体的知识点,话不多说,直接进入正题.


二、结构体

2.1 结构体概念🎈

   结构体(Struct)是编程语言中一种用于封装不同类型数据的复合数据类型。它允许将多种相关的数据元素组合成一个单一的实体,形成一个逻辑上的整体。每个数据元素称为“成员”或“字段”,可以是不同的数据类型。

  • 通俗来讲:
  • 一个变量里面可以有很多不同的数据类型;


2.2 结构体定义🎉

结构体定义格式1:struct  结构体标签{datatype 变量名;
}结构体变量;结构体定义例子:
struct Student{int id;   //定义一个存学号变量char *name;  //定义一个存名字变量
}stu; 结构体定义格式2:struct  结构体标签{datatype 变量名;
};结构体定义例子:
struct Student{int id;   //定义一个存学号变量char *name;  //定义一个存名字变量
}; 结构体定义格式3: (强烈推荐使用这个)
typedef  struct {datatype 变量名;
}结构体变量;结构体定义例子:
typedef struct {myType1  id;myType2  *name;
}Student;

   在明确怎么定义结构体之后,我们可以很容易看懂前两个列子,但是第三个用到了一个其他的例子,不要着急,结着往下面看:

typedef 数据类型 类型名字
通俗一点说: 就是给人家换了一个名字

   这个看懂之后我们就需要往后面学习了,我们不可能只是定义结构体而不去使用它,因此接下来学习结构体使用⬇️


2.3 结构体使用🎗️

   注意: 使用之前结构体我们先要对结构体变量进行声明一个结构体变量,怎么做?

//结构体变量声明
struct 结构体标签或者变量名  自己定义一个新的名字;
egOne://这些代码结合上面的代码一起来看struct Student student; //这就是声明一个Student类型的student变量;

   知道怎么做了,接下来就是实际上手操作!
   先来一个结构体赋值:

使用方法:(直接用声明的结构体变量直接--->)student.id = 202412;student.name ="小猿";

   看起来是不是很简单,直接点谁还不会对吧✨,这个呢就相当于我们在给结构体里面的变量输入值了。看到这,各位小伙伴能不能看懂呢(评论区见)。  
   在奖励一个输出::

使用方法:(直接用格式化输入输出即可 )printf("id:%d  name:%s\n",student.id,student.name);

   看起来是不是很简单,输出学完了✨,接着就要上升Level了。  
   在奖励一个结构体指针赋值:

	struct Student student; struct Student *pStudent;  //声明一个结构体变量pStudent = &student;       //取第一个声明结构体变量的地址pStudent->id = 1002;	   //结构体赋值又变了:->pStudent->name="结构";printf("结构体:    id:%d  name:%s\n",student.id,student.name);printf("结构体指针:id:%d  name:%s\n",pStudent->id,pStudent->name);

   学到这,我们就学习结构体的一些基本操作,同时也要明白结构体和结构体指针赋值的一种方式.多余的话就不多说了。

结尾 时间紧后面还有一些知识点这周内补上, 理解理解!(❁´◡`❁)

Although the road is far,the line is comming,Hard as it is,it will be done.

相关文章:

C语言结构体详细讲解

文章目录 [TOC] 一、前言二、结构体2.1 结构体概念🎈2.2 结构体定义🎉2.3 结构体使用🎗️ 结尾 时间紧后面还有一些知识点这周内补上, 理解理解!(❁◡❁) 一、前言 在学习结构体之前,讲讲为什么会专门写一章博客来分享…...

公交车信息管理系统:实现交通数据的智能化处理

概述 在对系统进行设计之前,需要对选题进行需求分析、可行性分析、流程分析、数据字典等内容。根据需求分析阶段,大致确定用户使用系统所需要具有的功能模块需求,由此规划出系统需要设计的相关功能模块。根据可行性分析阶段,确定系…...

在 Windows 下生成 .tgz 文件的方法

方法 1:使用 7-Zip 7-Zip 是一个流行的免费压缩工具,支持生成 .tar.gz 格式。 步骤: 下载并安装 7-Zip。准备好要压缩的文件或文件夹。右键点击文件或文件夹,选择 7-Zip > 添加到压缩文件...。在弹出的对话框中:…...

编程式浪漫,100款圣诞树代码分享

最近这几天有很多小伙伴开始寻找各种各样的圣诞树代码,我们最常用的Java,Python,C语言,前端,都是可以实现的。小巫师,就在这里分享超火的圣诞树代码,源码分享! 01.HTML圣诞树源代码…...

Nacos的下载和启动(如何快速稳定下载在github中)

目录 Nacos的下载 下载加速器 在githup中找到Nacos 启动Nacos 访问Nacos Nacos的下载 下载加速器 首先,我们需要进入githup中,我们直接访问,肯定是访问不到的。 这里我们经常玩游戏的同学肯定知道steam,这个加速器。直接进入…...

python基础知识(六)

文章目录 连接Mysql数据库安装Mysql数据库连接数据库创建数据库创建数据表查询表是否存在设置主键插入数据批量插入查询、删除、更新数据 使用PyMySql连接数据库安装PyMySql连接数据库 连接MongoDB安装pymongo驱动在MongoDB创建库及数据插入文档查询数据修改数据文档排序删除数…...

神经网络-LeNet

LeNet在1990年被提出,是一系列网络的统称,包括了LeNet1~LeNet5,对于神经网络的学习者来说,大家对下面这个图一定很熟悉,该图是对LeNet的简化展示。 在LeNet中已经提出了卷积层、Pooling层等概念,只是但是由…...

es 中 terms set 使用

在 Elasticsearch 中,terms_set 查询通常用于在一个字段上进行多值匹配,并支持设置一个条件(例如最小匹配数量),让查询结果更具灵活性。为了展示如何使用 terms_set 查询,我们首先会创建一个索引&#xff0…...

绩效考核试题

1.2.绩效考核 ()通过财务、客户、内部运营、学习与成长4个角度,将组织战略目标逐层分解转化为细化指标,有差异地针对不同的指标进行不同时期的绩效评估,有助于组织战略目标的实现。 A目标管理法 B平衡计分卡法 C硬性分…...

停车管理系统:构建安全、便捷的停车环境

Tomcat 简介 只要学习Java Web项目就不得不学习Tomcat。Tomcat是一种免费的开源的一种Java Web项目的容器,完美继承了 Apache服务器的特性,并且里面添加可以自动化运行的Java Web组件,让Java Web项目可以完全的运行到Tomcat里面。对于特大型项…...

十四、从0开始卷出一个新项目之瑞萨RZN2L之栈回溯(Default_Handler/hartfault)

目录 一、概述 二、参考资料 三、代码 四、日志 五、定位函数调用 六、README和工具 一、概述 软件开发中常见的比较棘手的问题就是hartfault/Default_Handler/dump,俗称跑飞了。 参考cmbacktrace,在瑞萨RZN2L/T2M实现栈回溯,串口打印…...

联通光猫怎么自己改桥接模式?

环境: 联通光猫 ZXHN F677V9 硬件版本号 V9.0 软件版本号 V9.0.0P1T3 问题描述: 联通光猫怎么自己改桥接模式 家里用的是ZXHN F677V9 光猫,最近又搞了个软路由,想改桥接模式 解决方案: 1.拿到最新超级密码&…...

突围边缘:OpenAI开源实时嵌入式API,AI触角延伸至微观世界

当OpenAI宣布开源其名为openai-realtime-embedded-sdk的实时嵌入式API时,整个科技界都为之震惊。这一举动意味着,曾经遥不可及的强大AI能力,如今可以被嵌入到像ESP32这样的微型控制器中,真正地将AI的触角延伸到了物联网和边缘计算…...

springBoot Maven 剔除无用的jar引用

目录 Used undeclared dependencies found Unused declared dependencies found 当项目经过一段时间的开发和维护后,经常会遇到项目打包速度变慢的问题。这通常与项目中包含大量的jar依赖有关,这些依赖之间的关系错综复杂。这种情况在项目维护过程中是…...

malloc 分配大堆块(128KB)的一次探索

前言 一次意外执行了 malloc(0x5000)&#xff0c;结构使用 gdb 调试发现其分配的位置在 TLS 区域&#xff0c;这令我不解&#xff08;&#xff1a;最后去看了下 malloc 源码和 mmap 源码实现&#xff0c;发现似乎可能是 gdb 插件的问题&#xff0c;乐 场景复现 #include <…...

Android -- 双屏异显之方法二

Android – 双屏异显之方法二: DisplayManager PS: 1. 使用改方法主板需连接至少两个输出显示屏&#xff1b; 2. 副屏内部实现与MediaRouter下一样&#xff1b;使用方法 # 主屏activity内&#xff1a; private SecondDisplay secondDisplay;private void dualScreen3288() {D…...

电脑使用CDR时弹出错误“计算机丢失mfc140u.dll”是什么原因?“计算机丢失mfc140u.dll”要怎么解决?

电脑使用CDR时弹出“计算机丢失mfc140u.dll”错误&#xff1a;原因与解决方案 在日常电脑使用中&#xff0c;我们时常会遇到各种系统报错和文件丢失问题。特别是当我们使用某些特定软件&#xff0c;如CorelDRAW&#xff08;简称CDR&#xff09;时&#xff0c;可能会遇到“计算…...

使用RDMA技术构建无损网络

如何使用RDMA构建无损网络&#xff1f; 在深入研究RDMA和无损网络领域后&#xff0c;会经常遇到两个基本问题&#xff1a;为什么采用无损网络至关重要&#xff1f;这些先进技术有什么优势&#xff1f; 无损网络是一种新型的网络技术&#xff0c;它可以在不丢失数据包的情况下传…...

vscode 识别git目录

vscode 偶尔无法识别使用git 新托管的项目。 以下是我提供的解决方案——重启 git.enabled VS Code配置问题&#xff1a; 有时候&#xff0c;VS Code的配置可能会导致无法识别.git文件夹。确保你的VS Code配置中启用了Git的相关功能。你可以通过”Settings”&#xff08;设置…...

OpenCV相机标定与3D重建(26)计算两个二维点集之间的部分仿射变换矩阵(2x3)函数 estimateAffinePartial2D()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 计算两个2D点集之间的具有4个自由度的最优有限仿射变换。 cv::estimateAffinePartial2D 是 OpenCV 库中的一个函数&#xff0c;用于计算两个二维…...

【杂谈】-递归进化:人工智能的自我改进与监管挑战

递归进化&#xff1a;人工智能的自我改进与监管挑战 文章目录 递归进化&#xff1a;人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管&#xff1f;3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

React hook之useRef

React useRef 详解 useRef 是 React 提供的一个 Hook&#xff0c;用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途&#xff0c;下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始&#xff0c;我们会探讨数据链路层的差错控制功能&#xff0c;差错控制功能的主要目标是要发现并且解决一个帧内部的位错误&#xff0c;我们需要使用特殊的编码技术去发现帧内部的位错误&#xff0c;当我们发现位错误之后&#xff0c;通常来说有两种解决方案。第一…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

基于数字孪生的水厂可视化平台建设:架构与实践

分享大纲&#xff1a; 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年&#xff0c;数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段&#xff0c;基于数字孪生的水厂可视化平台的…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill

视觉语言模型&#xff08;Vision-Language Models, VLMs&#xff09;&#xff0c;为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展&#xff0c;机器人仍难以胜任复杂的长时程任务&#xff08;如家具装配&#xff09;&#xff0c;主要受限于人…...

代码规范和架构【立芯理论一】(2025.06.08)

1、代码规范的目标 代码简洁精炼、美观&#xff0c;可持续性好高效率高复用&#xff0c;可移植性好高内聚&#xff0c;低耦合没有冗余规范性&#xff0c;代码有规可循&#xff0c;可以看出自己当时的思考过程特殊排版&#xff0c;特殊语法&#xff0c;特殊指令&#xff0c;必须…...

c++第七天 继承与派生2

这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分&#xff1a;派生类构造函数与析构函数 当创建一个派生类对象时&#xff0c;基类成员是如何初始化的&#xff1f; 1.当派生类对象创建的时候&#xff0c;基类成员的初始化顺序 …...