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

C语言结构体详细讲解

文章目录

    • @[TOC]
  • 一、前言
  • 二、结构体
    • 2.1 结构体概念🎈
    • 2.2 结构体定义🎉
    • 2.3 结构体使用🎗️
    • 2.4 结构体数组使用🎗️
  • 结尾 时间紧后面还有一些知识点这周内补上, 理解理解!(❁´◡`❁)

一、前言

   在学习结构体之前,讲讲为什么会专门写一章博客来分享这个知识点;首先在写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 数据类型 类型名字
通俗一点说: 就是给人家换了一个名字

myType2 *name; myType2 类型的数据大小,我们通过 myType2 *name;指针大小就可以了,这个指针会帮我们找到下一个数据的位置.

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


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);

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

2.4 结构体数组使用🎗️

   概念

   不要被这个吓到了,其实就是普通变量,可以定义一个指针指向结构体,也可以定义结构体数组

   结构体指针:

typedef struct Node {ElemType data;struct Node *next;
};Node *newNode = (Node *)malloc(sizeof(newNode));
newNode->data=0;	
newNode->next=NULL

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

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


http://www.mrgr.cn/news/81337.html

相关文章:

  • 蓝桥杯刷题——day8
  • 电子应用设计方案70:智能挂钟系统设计
  • 爬虫学习案例8
  • 在Visual Studio 2022中配置C++计算机视觉库Opencv
  • SAP SD客户主数据及其配置
  • 数据库课程设计mysql——个人博客数据管理系统
  • gateway网关
  • C语言项目 天天酷跑(上篇)
  • Pytorch分布式训练
  • Unity模型观察脚本
  • Android开发环境搭建和编译系统
  • 知识图谱嵌入大总结:难点、方法、工具、和图嵌入的区别
  • 【innodb 阅读笔记】之 数据页结构介绍
  • springboot容器无法获取@Autowired对象,报null对象空指针问题的解决方式
  • Element-plus表格使用总结
  • 5、mysql的读写分离
  • Docker数据库的主从复制
  • 基于springboot的海洋知识服务平台的设计与实现
  • HuaWei、NVIDIA 数据中心 AI 算力对比
  • ThinkPHP接入PayPal支付
  • Kibana:LINUX_X86_64 和 DEB_X86_64两种可选下载方式的区别
  • RT-DETR学习笔记(2)
  • CTFHub disable_functions通关
  • 华为路由器AR101W-S
  • go语言并发文件备份,自动比对自动重命名(逐行注释)
  • Require:离线部署 Sourcegraph